0

我有一个 Windows 窗体中的 DataGridView。我为此 DataGridView dgv 定义了 5 列。

存储过程返回的数据表与此 DataGridView 绑定。

         DataTable table1 = returned by a stored procedure in C#;
         dgv.DataSource = table1;
         dgv.AutoGenerateColumns = false;
         dgv = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; 

然后在另一个按钮事件中。我想重新绑定 DataGridView 一个数据源。

      DataTable dt1 = new DataTable();

然后

 DataRow dr = dt1.NewRow();
            dr["Interval"] = txtBox1.Text;
            dr["Count"] = txtBox2.Text;
            dr["AgeBegin"] = txtBox3.Text;
            dr["AgeEnd"] = txtBox4.Text;
            dr["Gender"] = txtBox5.Text;
            dt1.Rows.Add(dr);
            dgv.DataSource = dt1;

dt1 只有一行。现在 dgv 显示 10 列。前 5 列是空的,后 5 列是真实数据。

为什么?谢谢。

4

2 回答 2

1

您需要先设置AutoGenerateColumns为,false 然后再将其分配给DataSource

DataTable table1 = returned by a stored procedure in C#;
dgv.AutoGenerateColumns = false; // Before assigning the DataSource
dgv.DataSource = table1;
...
于 2012-06-12T18:30:44.337 回答
0

如果没有放置数据的位置,Datagridviews 会自动在您身上添加行。除非您告诉它不要这样做,否则这不是设计师的选择。

dgv.AutoGenerateColumns=false;

没关系你已经有了这个。

您不应该这样做,但您是否尝试在重新绑定之前清除 dgv,只是为了找出问题?

您是否在 datagridview 中预定义了列?我建议将其留空以启动并允许自动生成列,至少在您找出缺陷之前

于 2012-06-12T18:25:24.040 回答