У меня есть автоматически связанное 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;
}
}
}