0

尝试使用 ASP.NET C# 从我的 DATAGRID 中获取单元格值,我收到错误消息“对象引用未设置为对象的实例”。这是我所拥有的:

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

谢谢

4

2 回答 2

1

dgItem.Cells[1].FindControl("Item_Number") 为 null,ToString() 正在尝试将 null 对象转换为失败的字符串。您需要确保 A) 数据网格中至少有 2 列,并且 B) FindControl("Item_Number") 实际上会返回一些内容。

于 2013-10-18T15:48:41.490 回答
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 回答