2016-01-28 63 views
0

我是C#,ASP.NET的新手。 我正在創建一個小應用程序,我想列出一些數據。自定義datagridview運行時

下面提到的函數將數據綁定到3列。

屬性名稱,屬性'ReferenceID'和發佈日期。

using (SqlConnection con = new SqlConnection(strConnString)) 
      { 
       using (SqlCommand cmd = new SqlCommand("PROC_RECENT_HISTORY_HEADER")) 
       { 
        cmd.CommandType = CommandType.StoredProcedure; 
        cmd.Parameters.AddWithValue("@id", Member); 
        cmd.Connection = con; 
        con.Open(); 
        reader = cmd.ExecuteReader(); 

        GridView1.DataSource = reader; 
        GridView1.DataBind(); 

        con.Close(); 

       } 

Asp.net

<asp:GridView ID="GridView1" runat="server" class="form-control" Width="100%" ViewStateMode="Enabled" AutoGenerateColumns = "false"> 
       <Columns> 

        <asp:BoundField DataField="PRP_NAME" HeaderText="Property Name"/>  
        <asp:BoundField DataField="PRP_REF_NO" HeaderText="Reference"/> 
        <asp:BoundField DataField="PRP_CRDT" HeaderText="Post Date"/> 

       </Columns>  
      </asp:GridView> 

我想這個數據同時顯示兩個額外列。 一個是'沒有'作爲每行的序列號,另一列是'Action',它像超鏈接,當我點擊這裏時,頁面必須重定向到基於相應行的'property_ReferenceID'的動作。

如何添加列運行時間?

+0

請告訴我們例外。 –

+0

您的存儲過程中沒有一個名爲'PRP_ID'的字段。 (所以也可能會丟失'PRP_ACT') – Fred

+0

在運行時向存儲過程添加2列?上面的代碼不會在運行時添加它們。您需要更新存儲過程以選擇兩個額外的列。 – Fred

回答

0

Here GridView1.DataSource = reader;如果它由3列組成,那麼它將綁定3列數據。

第一步:通過添加列 第二步手動創建的列:將數據存儲到數據表

DataTable datatable = new DataTable(); 
    datatable.Load(cmd.ExecuteReader()); 

第三步:通過每個對象的循環從數據表

 DataTable dt= new DataTable(); 
     DataColumn dc1 = new DataColumn("PropertyName"); 
     DataColumn dc2 = new DataColumn("PropertyID"); 
     DataColumn dc3 = new DataColumn("Postdate"); 
     DataColumn dc4 = new DataColumn("columnName4"); 
     DataColumn dc5 = new DataColumn("columnName5"); 
     dt.Columns.Add(dc1); 
     dt.Columns.Add(dc2); 
     dt.Columns.Add(dc3); 
     dt.Columns.Add(dc4); 
     dt.Columns.Add(dc5); 

     foreach (DataRow row in datatable.Rows) 
     { 
      DataRow dr = dt.NewRow(); 
      dr[0] = row[propertyname]; 
      dr[1] = row[Propertytype]; 
      dr[2] = row[postdate]; 
      dr[3] = "YES"; 
      dr[4] = "NO"; 
      dt.Rows.Add(dr); 
     } 
     GridView1.DataSource = dt;