2013-06-20 120 views
0

如何獲取datagridview中的空值我在單元驗證事件中執行了此操作,但它似乎可行。我希望用戶添加一個新行,並且有人強迫他給出一個ID或刪除該行。我究竟做錯了什麼。這不是一個如何做的問題。這是一個什麼是錯的問題。所以現在它檢測到空,但一旦我糾正了細胞,它仍然劑量允許我離開行。datagridview單元格的空值vb.net

  If DataGrid.CurrentCell.ColumnIndex = 0 Then 
     If IsDBNull(DataGrid.CurrentCell.Value) Then 
      Msgbox("Cannot be Null") 
       e.cancel = true 
     ElseIf Not IsDBNull(DataGrid.CurrentCell.Value) Then 
       e.cancel = False 

     End If 
    End If 

回答

1

所以我想這和它的作品對我來說。它只是使用e.formatedvalue。當前單元格值是編輯前後的單元格值,而formatedvalue是正在輸入的單元格值。我想現在我明白所以這裏是編碼

   If grdDataGrid.CurrentCell.ColumnIndex = 2 Then 
     If e.FormattedValue = "" Or IsDBNull(e.FormattedValue) Then 
      MsgBox("Cannot be Null") 
      e.Cancel = True 
      Exit Sub 

     End If 
    End If 

他們也是不同的方式像調節你的列屬性不允許爲空,但由於列屬性從數據庫繼承我決定利用這一點。

+1

啊..我沒有注意到.. – matzone

0

我想這應該是作品...

If DataGrid.CurrentCell.ColumnIndex = 0 Then 
    If IsDBNull(DataGrid.CurrentCell.Value) Then 
      Msgbox("Cannot be Null") 
      e.cancel = true 
      exit sub 
    End If 
End If 
+0

在我通過添加值來修正單元格後仍然是這樣,我仍然不能離開行,因爲e.cancel。這就是爲什麼我添加他elseif。但我正確地把它放在細胞驗證? –

+0

@shaikibrahim ..你把這個細胞驗證事件? – matzone

+0

是的,我做了,它仍然不會解決問題 –

0

解決此問題的另一種方法是將新數據網格單元格的默認空值明確設置爲您正在檢查的值。例如,如果您要拖動字符串值,請將null =設置爲空字符串。您可以使用屬性面板來設置它。

+0

雖然這可能是一個有效的回答,你可能想要顯示你正在嘗試解釋的代碼。 – rfornal