【发布时间】:2017-07-11 17:10:59
【问题描述】:
我的表单上有一个 DataGridview,如下所示,用户可以输入数据行。如您所见,其中一列是 Combobox 列。
当用户单击表单上的保存按钮时,他们添加到网格中的条目将保存到数据库中的表中。
完成后我需要它做的是,下次打开表单时,位置为“库存”的任何条目仍位于网格中。我已经尝试了下面的代码,但只是得到了下面的问题。
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;
表单加载时的结果:
如您所见,它将 SELECT 语句中的数据添加为两个新列,而不是用数据填充现有列。我需要它来加载填充了现有数据的表单,并保留添加新行以及更改现有数据的位置列的能力。在它上面将现有位置加载为文本字段,而不是从组合框列中选择该选项。
我在某处读到数据库中的列和 datagridview 中的列需要相同 - 它们是。
我完全被难住了,这是我在这个项目上需要做的最后一点工作,我终于完成了(只花了 6 个月的时间让不同的人参与进来并请求更改 - 这与原始规范完全不同!)。
如有任何帮助,我们将不胜感激。
非常感谢。
更新: 根据 cmets 中 Fabio 的建议,我添加了该行
ProductLocGrid.AutoGenerateColumns = false;
当我加载表单时,网格现在看起来像这样:
如您所见,列不再重复,但数据也没有被填充。
【问题讨论】:
-
在表单的构造函数集合
DataGridView.AutoGenerateColumns = false; -
以 Fabio 的评论为基础:请参阅 MSDN documentation for
DataGridViewColumn.DataPropertyName。 -
法比奥 - 感谢您的建议。我已添加您的代码,请参阅我对原始问题的更新。 OhBeWise - 感谢您的链接,我目前正在阅读它,
标签: c# datagridview