2013-02-08 3 views
0

Я пытаюсь проверить, является ли значение столбца ["CellNumber"] emtpy или нет с условием if. Даже если значение ячейки столбца не пустое, оно запрашивает окно с сообщением вместо выхода из foreach loop и обновления данных.Ошибка проверки, если значение столбца пуст или null

private void btnUpdate_Click(object sender, EventArgs e) 
    { 
     da = new SqlDataAdapter("select * from Measurement", con); 
     SqlCommandBuilder cb = new SqlCommandBuilder(da); 
     foreach (DataGridViewRow row in dgv.Rows) 
     { 
      if (Convert.ToString(row.Cells["CellNumber"].Value) == "") 
      { 
       MessageBox.Show("Please enter cellnumber", "Missing Information"); 
       return; 
      } 
     } 
     try 
     { 
      da.Update(ds, "Measurement"); 
     } 
     catch (DBConcurrencyException ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
+0

Он не проверяет, имеет ли значение столбца значение или нет. Если столбец [«CellNumber»] уже имеет значение, и если я отредактирую столбец рядом с ним с именем column [«LastName»], он по-прежнему просит ввести номер ячейки в ящик сообщения. Он находится в том же ряду, и я думаю, что мне нужно получить индекс строки, но как? – 2013-02-08 14:57:01

+0

Я попытался использовать gzaxx ниже: if (row.Cells ["CellNumber"]. Значение == null || string.IsNullOrEmpty (row.Cells ["CellNumber"]. Value.ToString())) { // rest } ' – 2013-02-08 14:58:01

+0

затем попробуйте мой [ответ] (http://stackoverflow.com/a/14774551/1080742)': D' – spajce

ответ

1

Пожалуйста, проверьте количество строк в DataGridView, делая

DataGridView. If myDataGridView.Rows.Count == 0 

Если он равен 0, то он пуст

0

вы используете «CellNumber» Строка, не так ли быть int?

if (Convert.ToString(row.Cells["CellNumber"].Value) == "")

+0

попробуйте отформатировать свой ответ ': D' – spajce

0
if (string.IsNullOrEmpty(row.Cells["CellNumber"].Value)) 
{ Your Code } 
+1

, пожалуйста, попробуйте отформатировать свой ответ': D ' – spajce

+0

format done .... – Sandeep

0

Попробуйте этот путь

if (row.Cells["CellNumber"].Value == null || string.IsNullOrEmpty(row.Cells["CellNumber"].Value.ToString())) 
{ 
    //rest 
} 

вызова dgv.CurrentRow.DataGridView.EndEdit();, чтобы сохранить изменения во всех клетках, прежде чем проверка :)

private void btnUpdate_Click(object sender, EventArgs e) 
{ 
    dgv.CurrentRow.DataGridView.EndEdit(); 
    dgv.EndEdit(); 
    .... 
+0

+1 на самом деле достаточно' if (string.IsNullOrEmpty (row.Cells ["CellNumber"]. Value.ToString())) ' – spajce

+0

Это не так, если' row.Cells [ «CellNumber»]. Значение «null», тогда вызов '.ToString()' на нем вызовет исключение. – gzaxx

+0

так, как насчет 'if (string.IsNullOrEmpty (row.Cells [" CellNumber "]. EditedFormattedValue.ToString()))'? без 'row.Cells [" CellNumber "]. Значение == null'? – spajce

0

попробовать использовать .EditedFormattedValue

 if (string.IsNullOrWhiteSpace(row.Cells["CellNumber"].EditedFormattedValue.ToString())) 
     { 
      MessageBox.Show("Please enter cellnumber", "Missing Information"); 
      return; 
     } 
Смежные вопросы