填充C#WinForms DataGridview

时间:2017-07-10 16:27:22

标签: c# datagridview

我的表单上有一个DataGridview,如下所示,用户可以输入数据行。如您所见,其中一列是Combobox列。

Grid before Save

当用户单击表单上的“保存”按钮时,他们添加到网格中的条目将保存到数据库中的表中。

完成此操作后我需要做的是,下次打开表单时,位置为" Stock"仍然坐在电网里。我已经尝试了下面的代码,但只是得到了以下问题。

        SqlConnection con = new SqlConnection(ConString);
        con.Open();
        SqlCommand cmd1 = new SqlCommand("SELECT ProductID, Location FROM ProductLoc WHERE Location LIKE 'Stock'", con);
        cmd1.CommandType = CommandType.Text;
        DataTable dt = new DataTable();
        SqlDataReader re = cmd1.ExecuteReader();
        dt.Load(re);
        ProductLocGrid.DataSource = dt;

表单加载时的结果:

Grid after Form Loads

正如您所看到的,它将SELECT语句中的数据添加为两个新列,而不是使用数据填充现有列。我需要它来加载填充了现有数据的表单,并保留添加新行的功能,还可以更改现有数据的“位置”列。在它上方将现有位置加载为文本字段,而不是从组合框列中选择该选项。

我在某处读到数据库中的列和datagridview中的列必须相同 - 它们是。

我完全难过了,这是我在这个项目上需要做的最后一点工作,我终于完成了(只花了6个月的不同人参与并要求变更 - 它&# 39; s与原始规格完全不同!)。

感谢任何帮助。

非常感谢提前。

更新: 根据Fabio在评论中提出的建议,我添加了一行

ProductLocGrid.AutoGenerateColumns = false;

当我加载表单时,网格现在看起来像这样:

Grid after addition of comment

如您所见,列不再重复,但数据也未填充。

1 个答案:

答案 0 :(得分:0)

非常感谢Fabio建议添加

DataGridView.AutoGenerateColumns = false;

我添加了这个,起初它没有用,但是当我发现我做了一个拼写错误并更正了我的专栏名称时,它运作得很好。