【问题标题】:Populating a C# WinForms DataGridview填充 C# WinForms DataGridview
【发布时间】: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


【解决方案1】:

非常感谢法比奥的建议添加

DataGridView.AutoGenerateColumns = false;

我添加了这个,起初它没有用,但是当我发现我写错字并更正了我的列名时,它工作得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2020-09-14
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多