嘗試使用ASP.NET C#從我的DATAGRID中獲取單元格值,並且收到錯誤消息,指出「對象引用未設置爲對象的實例」。以下是我有:如何獲取DATAGRID中單元的值?
foreach (DataGridItem dgItem in dgPrintTicket.Items)
{
string itm = dgItem.Cells[1].FindControl("Item_Number").ToString();
}
謝謝
嘗試使用ASP.NET C#從我的DATAGRID中獲取單元格值,並且收到錯誤消息,指出「對象引用未設置爲對象的實例」。以下是我有:如何獲取DATAGRID中單元的值?
foreach (DataGridItem dgItem in dgPrintTicket.Items)
{
string itm = dgItem.Cells[1].FindControl("Item_Number").ToString();
}
謝謝
要克服錯誤的「不設置到對象的實例對象引用」使你的代碼空安全:
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;
}
dgItem.Cells [1] .FindControl( 「ITEM_NUMBER」)爲空,toString()方法是試圖空objecdt轉換爲字符串,它失敗。您需要確保:A)數據網格中至少有2列,並且B)FindControl(「Item_Number」)實際上會返回一些內容。
是有4列,第二列是「Item_Number」。 DataGrid有3行數據,所以不知道發生了什麼。 – hmakled
確定修復了錯誤,但我無法從您提到的任何解決方案中獲得價值。當我調試第一個解決方案時,我可以看到「控制」變量中的值,但是當我將它分配給「itm」時,則該值顯示爲「System.Web.UI.WefControls.Label」而不是實際值。爲什麼? – hmakled
control.ToString()方法顯示控件的默認類型。在你的情況下,這是「System.Web.UI.WefControls.Label」。可能你在control.Text屬性中找到了你的值,假設標籤包含你的值。這個單元中還有其他什麼控件? – abto
嘗試了control.Text,但「文本」選項沒有顯示或顯示爲選項。我只能使用control.ToString()。它是我在ItemTemplates中的DataGrid中添加的Label控件。當我調試並將光標放在「control」變量上時,它表示control =「Text = F2140」,因此它找到控件和值,但由於某些奇怪的原因無法解壓。 – hmakled