1

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

3 回答 3

3

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

在此处输入图像描述

于 2012-07-24T16:08:03.120 回答
0

列的名称可能与其文本表示不同。根据文档,该索引器正在查看该Name属性而不是该HeaderText属性。列设计器应该让您更改名称或查看当前名称。

于 2012-07-24T16:07:36.973 回答
0

此问题有两个可能的原因,您没有绑定 DataGridView您使用的列名不正确。

在您的表单加载中,您似乎永远不会绑定网格的数据源。您需要将代码更改为这样的内容(猜测 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); 
}

检查列名的方法有很多种——你总是可以在这里放置一个断点方法并在调试器中查看,或者你可以在数据集设计器中查看。网格中的列名将与设计器中的列名匹配(如果您使用表单设计器列和数据属性名称,则在表单设计器中查找名称)。

请注意,名称和 HeaderText 不必匹配,因此使用 HeaderText 通常不起作用。

于 2012-07-24T16:38:09.547 回答