我希望在表单加载时按列对DataGridView进行排序,但是我得到了一个异常。
private void frm_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSetExclusion.Exclude' table. You can move, or remove it, as needed.
this.excludeTableAdapter.Fill(this.dataSetExclusion.Exclude);
this.dgv.Sort(this.dgv.Columns["ID"], ListSortDirection.Ascending);
}
DataGridView dgv中列的头文字是“ID”。它的DataPropertyName是“ExcludeID”。我为列名尝试了“ID”和“ExcludeID”,但仍然有例外。
Value cannot be null.Parameter name: dataGridViewColumn
答案 0 :(得分:2)
尝试检查该列的name属性,如下所示
答案 1 :(得分:0)
列的名称可能与其文本表示不同。根据文档,该索引器正在查看Name
属性而不是HeaderText
属性。列设计器应该允许您更改名称或查看其当前名称。
答案 2 :(得分:0)
此问题有两种可能的原因,或者您没有绑定DataGridView 或您使用的列名不正确。
在您的表单中加载您的don似乎永远绑定网格的数据源。你需要将你的代码更改为这样的东西(猜测dataSetExclusion.Exclude是你想要的网格吗?):
private void frm_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSetExclusion.Exclude' table. You can move, or remove it, as needed.
this.excludeTableAdapter.Fill(this.dataSetExclusion.Exclude);
this.dgv.DataSource = this.dataSetExclusion.Exclude;
this.dgv.Sort(this.dgv.Columns["ID"], ListSortDirection.Ascending);
}
有多种方法可以检查列名称 - 您可以在此处放置断点方法并查看调试器,或者查看DataSet Designer。网格中的列名称将与设计器中的列名称匹配(如果您使用的是表单设计器列和数据表名称,则请在表单设计器中查找名称)。
请注意,Name和HeaderText不必匹配,因此使用HeaderText通常不起作用。