Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义datagridview运行时_C#_Asp.net - Fatal编程技术网

C# 自定义datagridview运行时

C# 自定义datagridview运行时,c#,asp.net,C#,Asp.net,我是C#,ASP.NET的新手。 我正在创建一个小应用程序,我想在其中列出一些数据 下面提到的函数用3列绑定数据 属性名称、属性“ReferenceID”和发布日期 using (SqlConnection con = new SqlConnection(strConnString)) { using (SqlCommand cmd = new SqlCommand("PROC_RECENT_HISTORY_HEADER"))

我是C#,ASP.NET的新手。 我正在创建一个小应用程序,我想在其中列出一些数据

下面提到的函数用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>

我想随此数据显示两个额外的列。 一个是“No.”作为每行的序列号,另一个是“Action”,就像一个超链接,当我单击此处时,页面必须重定向到基于相应行的“property_ReferenceID”的操作


如何在运行时添加列?

此处为GridView1.DataSource=reader;如果它由3列组成,那么它将与3列数据绑定

步骤1:通过添加列手动创建列 步骤2:将数据存储到datatable中

   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;
步骤3:循环遍历datatable中的每个对象

   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;

请向我们显示异常。您的存储过程中没有名为
PRP\u ID
的字段。(因此可能也缺少
PRP_ACT
)在运行时向存储过程添加2列?上面的代码没有在运行时添加它们。您需要更新存储过程以选择两个额外的列。运行时是什么意思?您正在设计时在GridView中列出列,并将它们绑定到数据字段。在绑定数据源之前,这些数据字段必须存在于数据源中。您的错误告诉您它们不存在。现在更正了我的错误,现在它是无错误的,但是我如何显示额外的列?一个用于序列号,一个用于超链接