0

ASP.NET C# を使用して DATAGRID からセル値を取得しようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラー メッセージが表示されます。ここに私が持っているものがあります:

foreach (DataGridItem dgItem in dgPrintTicket.Items)
{
    string itm = dgItem.Cells[1].FindControl("Item_Number").ToString();
}

ありがとうございました

4

2 に答える 2

1

「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーを解決するには、コードを null セーフにします。

foreach (DataGridItem dgItem in dgPrintTicket.Items)
{
    var control = dgItem.Cells[1].FindControl("Item_Number");

    string itm = control != null ? control.ToString() : null;
}

ただし、次のコードでセルの値を取得する必要があると思います。

foreach (DataGridItem dgItem in dgPrintTicket.Items)
{
    string itm = dgItem.Cells[1].Text;
}

FindControl によって検出されたコントロールが実際にある場合は、次のコード フラグメントを使用します。

foreach (DataGridItem dgItem in dgPrintTicket.Items)
{
    var control = dgItem.Cells[1].FindControl("Item_Number") as Label;

    string itm = control != null ? control.Text : null;
}
于 2013-10-18T15:53:24.563 に答える
1

dgItem.Cells[1].FindControl("Item_Number") は null です。ToString() は null オブジェクトを文字列に変換しようとしていますが、失敗します。A) データ グリッドに少なくとも 2 つの列があり、B) FindControl("Item_Number") が実際に何かを返すことを確認する必要があります。

于 2013-10-18T15:48:41.490 に答える