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 の列の headtext は「ID」です。その DataPropertyName は「ExcludeID」です。列名に「ID」と「ExcludeID」の両方を試しましたが、それでも例外が発生しました。

Value cannot be null.Parameter name: dataGridViewColumn
4

3 に答える 3

3

以下に示すように、その列の name プロパティを確認してみてください

ここに画像の説明を入力

于 2012-07-24T16:08:03.120 に答える
0

列の名前は、テキスト表現とは異なる場合があります。ドキュメントによると、そのインデクサーはNameプロパティではなくプロパティを調べていHeaderTextます。列の設計者は、名前を変更したり、現在の名前を確認したりできるようにする必要があります。

于 2012-07-24T16:07:36.973 に答える
0

この問題には 2 つの原因が考えられます。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); 
}

列名を確認するにはさまざまな方法があります。いつでもここにブレーク ポイント メソッドを配置してデバッガーで確認するか、DataSet デザイナで確認することができます。グリッドの列名はデザイナーの列名と一致します (フォーム デザイナーの列とデータ プロパティ名を使用している場合は、代わりにフォーム デザイナーで名前を探します)。

Name と HeaderText が一致している必要はないので、HeaderText を使用してもうまくいかないことが多いことに注意してください。

于 2012-07-24T16:38:09.547 に答える