2012-03-05 64 views
0

如何檢查C#中的DataGridView中的空單元格值?我用DBNull來檢查,但它不工作,我得到「對象引用未設置爲對象的實例」錯誤。 我正在使用VS2010。DataGridView中的空值

任何人都可以幫助我嗎?

DateGridView具有以下屬性: 名稱:dgTelFax AllowUserToAddRows:真 AllowUserToDeleteRows:真

的代碼我目前擁有的是:提前

  DataSet objDSTelephone = new DataSet(); 
      DataTable objDTTelephone = objDSTelephone.Tables.Add(); 

      string strTelephoneID = ""; 
      string strTelephone = ""; 

      int intRecTel = dgTelFax.Rows.Count; 
      if (intRecTel > 0) 
      { 
       //-- Add columns to the data table 
       objDTTelephone.Columns.Add("id", typeof(string)); 
       objDTTelephone.Columns.Add("telephone", typeof(string)); 

       for (int i2 = 0; i2 <= intRecTel - 1; i2++) 
       { 
        strTelephoneID = (!DBNull.Value.Equals(dgTelFax.Rows[i2].Cells[0].Value)) ? dgTelFax.Rows[i2].Cells[0].Value.ToString() : ""; 
        strTelephone = (!DBNull.Value.Equals(dgTelFax.Rows[i2].Cells[2].Value)) ? dgTelFax.Rows[i2].Cells[2].Value.ToString() : ""; 
        objDTTelephone.Rows.Add(strTelephoneID, strTelephone); 
       } 
      } 

謝謝!

+0

檢查了這一點http://stackoverflow.com/questions/3155684/handle-empty-cells-in-datagridview – Raymund 2012-03-05 00:59:45

回答

1

在這種情況下,您的dgTelFax不包含DBNull.Value,而是包含簡單的null。爲了驗證這一點,你可以這樣寫:

strTelephoneID = (dgTelFax.Rows[i2].Cells[0].Value ?? string.Empty).ToString(); 
strTelephone = (dgTelFax.Rows[i2].Cells[2].Value ?? string.Empty).ToString(); 

如果數據源列的類型爲字符串,就足以說:

strTelephoneID = (string)dgTelFax.Rows[i2].Cells[0].Value; 
strTelephone = (string)dgTelFax.Rows[i2].Cells[2].Value; 

但問題是 - 你爲什麼不綁定到數據網格objDTTelephone?那麼你不需要自己傳輸數據。

0

獲得Cell值前檢查電池值:

if(!string.IsNullOrEmpty(dgTelFax.Rows[2].Cells[0].Value) { 
    strTelephoneID = dgTelFax.Rows[2].Cells[0].Value.Tostring(); 
}