【问题标题】:DataGridView column sort exceptionDataGridView 列排序异常
【发布时间】:2012-07-23 00:00:07
【问题描述】:

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

【问题讨论】:

  • 如果您在排序行设置断点并检查 this.dgv.Columns,您是否在列表中看到“ID”或“ExcludeID”?你在哪里设置了 dgv.DataSource?

标签: c# winforms sorting datagridview


【解决方案1】:

此问题有两个可能的原因,您没有绑定 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 通常不起作用。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-07-09
        • 1970-01-01
        • 2021-11-18
        • 2013-07-06
        • 2012-12-31
        • 1970-01-01
        • 2012-04-06
        • 2014-03-10
        • 1970-01-01
        相关资源
        最近更新 更多