Строка DataGridView все еще грязна после фиксации изменений

DataGridView.IsCurrentRowDirty остается true после того, как я передаю изменения в базе данных. Я хочу установить его на false таким образом, это не инициировало RowValidating когда это теряет фокус.

У меня есть a DataGridView связанный с a BindingList<T>. Я обрабатываю CellEndEdit событие и сохраняет изменения в базе данных. После сохранения тех изменений я хотел бы DataGridView.IsCurrentRowDirty быть установленным на true, так как все ячейки в строке актуальны; однако, это установлено на false.

Это вызывает проблемы для меня, потому что, когда строка действительно теряет фокус, это инициирует RowValidating, в котором я обрабатываю и проверяю все три ячейки. Таким образом даже при том, что все ячейки допустимы, и ни один не грязен, это все еще проверит их всех. Это - отходы.

Вот пример того, что я имею:

void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    // Ignore cell if it's not dirty
    if (dataGridView.isCurrentCellDirty)
        return;

    // Validate current cell.
}

void dataGridView_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
    // Ignore Row if it's not dirty
    if (!dataGridView.IsCurrentRowDirty)  
        return;

    // Validate all cells in the current row.
}

void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    // Validate all cells in the current row and return if any are invalid.

    // If they are valid, save changes to the database

    // This is when I would expect dataGridView.IsCurrentRowDirty to be false.
    // When this row loses focus it will trigger RowValidating and validate all 
    // cells in this row, which we already did above.
}

Я прочитал сообщения, в которых было сказано, что я мог назвать форму Validate() метод, но это вызовет RowValidating стрелять, который является тем, чего я стараюсь избегать.

Любая идея, как я могу установить DataGridView.IsCurrentRowDirty кому: true? Или возможно способ предотвратить RowValidating от ненужной проверки всех ячеек?

5
задан Jim Counts 9 April 2010 в 18:40
поделиться