我的表单上有一个DataGridview,如下所示,用户可以输入数据行。如您所见,其中一列是Combobox列。
当用户单击表单上的“保存”按钮时,他们添加到网格中的条目将保存到数据库中的表中。
完成此操作后我需要做的是,下次打开表单时,位置为" 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;
表单加载时的结果:
正如您所看到的,它将SELECT语句中的数据添加为两个新列,而不是使用数据填充现有列。我需要它来加载填充了现有数据的表单,并保留添加新行的功能,还可以更改现有数据的“位置”列。在它上方将现有位置加载为文本字段,而不是从组合框列中选择该选项。
我在某处读到数据库中的列和datagridview中的列必须相同 - 它们是。
我完全难过了,这是我在这个项目上需要做的最后一点工作,我终于完成了(只花了6个月的不同人参与并要求变更 - 它&# 39; s与原始规格完全不同!)。
感谢任何帮助。
非常感谢提前。
更新: 根据Fabio在评论中提出的建议,我添加了一行
ProductLocGrid.AutoGenerateColumns = false;
当我加载表单时,网格现在看起来像这样:
如您所见,列不再重复,但数据也未填充。
答案 0 :(得分:0)
非常感谢Fabio建议添加
DataGridView.AutoGenerateColumns = false;
我添加了这个,起初它没有用,但是当我发现我做了一个拼写错误并更正了我的专栏名称时,它运作得很好。