2015-06-08 5 views
0

Я разрабатываю приложение, в котором преподавателю разрешено вводить знаки для учащихся, основываясь на выборе предмета, который они учат. Теперь я использую 4 columed datagrid, в который я заполняю все классы rollnum (1-й столбец) и имя (2-й столбец) и текстовое поле для ввода тестовых меток (3-й столбец) и управления текстовыми полями для ввода меток викторины (4-й столбец). Я преуспел в заполнении данных в datagrid через datatable. Теперь моя проблема заключается в том, что когда учитель вводит все метки и нажимает кнопку отправки, я хочу, чтобы мое приложение проверяло, осталось ли какое-либо из текстовых полей пустым. Если и до тех пор, пока все текстовые поля не будут заполнены, мой запрос INSERT (добавление меток в запрос базы данных) не должен выполняться. Это то, что я пробовал до сих порПроверка контроля texbox в gridview

int rowcount = DTUSNName.Rows.Count;//rows count of datatable 
     for (int i = 0; i < rowcount; i++) 
     { 
      if (dataGridView1.Rows[i].Cells[0].Value != null) 
      { 
       if (dataGridView1.Rows[i].Cells[1].Value != null) 
       { 
        var confirmResult = MessageBox.Show("Once the marks are added you wont be allowed to make changes. Do you want to proceed?","Confirm!!",MessageBoxButtons.YesNo); 
        if (confirmResult == DialogResult.Yes) 
        { 
         SqlCommand Test1query = new SqlCommand("INSERT INTO TblStudentReg (Test1, Quiz1) VALUES (@fld1,@fld2) WHERE [email protected] AND Sem = @sem AND [email protected] AND AcademicYr = @aca", con); 
         Test1query.Parameters.Add(new SqlParameter("@fld1", dataGridView1.Rows[i].Cells[0].Value.ToString())); 
         Test1query.Parameters.Add(new SqlParameter("@fld2", dataGridView1.Rows[i].Cells[1].Value.ToString())); 
         Test1query.Parameters.Add(new SqlParameter("@code", temp));//rollnum 
         Test1query.Parameters.Add(new SqlParameter("@sem", StaffMEDrp1.SelectedItem));subject code 
         Test1query.Parameters.Add(new SqlParameter("@cc", label3.Text));//subject code 
         Test1query.Parameters.Add(new SqlParameter("@aca", StaffMETxt1.Text));//academic yr 
         con.Open(); 
         Test1query.ExecuteNonQuery(); 
         con.Close(); 
        } 
        else 
        { 
        } 
       } 
       else 
       { 
        MessageBox.Show("You have not set Quiz 1 Marks for USN : '" + usn + "'"); 
       } 
      } 
      else 
      { 
       MessageBox.Show("You have not set Test 1 Marks for USN : '" + usn + "'"); 
      } 
     } 

Спасибо.

+0

Итак, это генерирует любую ошибку/исключение или не распознает пустые значения и продолжает работать? –

+0

Как насчет проверки свойств '.Text' является пустой или пустой строкой? –

+0

@Harvery: Это отлично работает. Но мне нравится проверять, не весь ли элемент управления текстовым полем, прежде чем перейти к инструкции ti insert. –

ответ

2

если то, что вы едите DataGridViewTextBoxCells вместо TextBoxes вы могли бы использовать этот метод

static bool IsAnyCellEmpty(DataGridView gridView, params int[] columnIndexes) 
     { 
      bool result = false; 
      foreach (DataGridViewRow row in gridView.Rows) 
      { 
       foreach (var index in columnIndexes) 
       { 
        if (row.Cells[index].Value.ToString().Trim().Length == 0) 
        { 
         result = true; 
         break; 
        } 
       } 
      } 
      return result; 
     } 

Вы должны пройти индексы столбцов, валидизировавшие столбцы во втором аргументе , если любой из них пустует это приведет, как правда

PS: если вы хотите, чтобы подсчитать, сколько значения не установлены вы можете изменить переменную результата в int и сделать result++ вместо result = true

+0

Patrick: Я использую DataGridViewTextBoxColumn для добавления столбца текстовых полей. Если добавить DataGridViewTextBoxColumn - это плохая идея, пожалуйста, предложите мне, что я могу использовать для замены DataGridViewTextBoxColumn. –

+0

Так что не получилось? – Patrick

+0

Это прекрасно, только примечание о TextBoxes - это просто недоразумение. – TaW

Смежные вопросы