DataGridView列排序异常

时间:2012-07-24 15:56:59

标签: c# winforms sorting datagridview

我希望在表单加载时按列对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

3 个答案:

答案 0 :(得分:2)

尝试检查该列的name属性,如下所示

enter image description here

答案 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通常不起作用。