2011-12-20 3 views
1

Я работаю на окна формы проекта. В моей форме у меня есть datagrid со столбцом, который должен быть заполнен в каждой строке.WinForms DataGridView, устанавливая обязательный столбец

Я хотел бы получить что-то похожее на MS Mangement Studio: если обязательная ячейка в текущей строке не заполнена, я не смог добавить еще одну строку.

Как я могу это сделать?

ответ

3

Используйте CellValidiating событие, чтобы проверить значение столбца.

Что-то вроде этого:

const int MandatoryColumnIndex = 1; 
    public Form1() 
    { 
     InitializeComponent(); 
     dataGridView1.CellValidating += new DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating); 
     dataGridView1.RowValidating += new DataGridViewCellCancelEventHandler(dataGridView1_RowValidating); 

    } 

    private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e) 
    { 

     if (dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].FormattedValue.ToString() == string.Empty) 
     { 
      e.Cancel = true; 
      dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].ErrorText = "Mandatory"; 
     } 
     else 
     { 
      dataGridView1.Rows[e.RowIndex].Cells[MandatoryColumnIndex].ErrorText = string.Empty; 
     } 
    } 

    private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
    { 
     if (e.ColumnIndex == MandatoryColumnIndex) 
     { 
      if (e.FormattedValue.ToString() == string.Empty) 
      { 
       dataGridView1[e.ColumnIndex, e.RowIndex].ErrorText = "Mandatory"; 
       e.Cancel = true; 
      } 
      else 
      { 
       dataGridView1[e.ColumnIndex, e.RowIndex].ErrorText = string.Empty; 
      }   
     } 
    } 
+0

Пытаюсь свой кусок кода, но есть что-то не так: если я изменить обязательную ячейку она работает, но если я только заполнить другие клетки, оставляя обязательным пустым , Я могу добавить все строки, которые я хочу. Это не хорошо – davioooh

+0

Вы можете использовать 'RowValidating' событие тоже. Я изменил код, чтобы показать пример. – Dave

+0

Отлично! Оно работает! Спасибо! (Я решил использовать только событие «RowValidating») – davioooh

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