2016-01-28 64 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;