Как предотвратить неправильный ввод данных в DataGridViewCell - PullRequest
0 голосов
/ 16 июня 2010

У меня есть автоматически связанное DataGridView, которое получает данные и обновляет данные непосредственно из Strongly Typed Dataset и его TableAdapter.

DataGridView позволяет редактировать данные, но у меня возникают проблемы, связанные с плохо отформатированнымввод данных.

Например, одним из столбцов является дата, отформатированная в базе данных как datetime, 11/05/2010.Вы можете редактировать дату, и DataGridView открывает TextBox, в котором вы можете вводить буквы, символы и другие неавторизованные символы.Когда вы заканчиваете редактировать ячейку, если у нее такие неверные данные, выдается System.FormatException

Как я могу предотвратить ввод некоторых данных?

Есть ли способ «отфильтровать» эти данные передотправляется обратно в DataGridView?

==============================================================================

Как сказал Алан, ключ былобрабатывать событие cellValidating.Я приложу некоторый код, который поможет обработать значение:

public static void CellValidating(object sender, System.Windows.Forms.DataGridViewCellValidatingEventArgs e)
    {

        string newValue = e.FormattedValue.ToString();
        string oldValue = ((System.Windows.Forms.DataGridView)(sender)).Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString();

        //i like to check that the value has changed before validating it
        if (newValue != oldValue)    
        {
            if (false)//replace this with actual validation.        
            {
                //if data not valid cancel validation
                e.Cancel= true;
            }
        }

    }

1 Ответ

4 голосов
/ 16 июня 2010

В DataGridView есть события Row / CellValidating, их можно использовать для проверки ввода и отмены события, если ввод недопустим - это оставляет строку / ячейку в режиме редактирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...