Сетка с привязанным параметром DateTime из Textbox создает исключение DateTimeException при сортировке
У меня проблемы с ASP.NET GridView.
GridView настроен на извлечение строк из хранимой процедуры через SqlDataSource. Gridview имеет BoundField, который заполняет параметр DateTime для хранимой процедуры из текстового поля ASP.NET в форме.
Когда я ввожу недопустимый DateTime в текстовое поле ASP.NET, а затем щелкаю любой столбец GridView, чтобы отсортировать его, GridView создает исключение FormatException в своем событии PreRender: "недопустимый символ в позиции 0".
Как я могу перехватить или остановить пользователя от сортировки GridView, когда в TextBox есть недопустимый DateTime?
Я уже пробовал валидаторы форм, но похоже, что они не учитывают клики GridView. Одна из моих мыслей заключалась в том, чтобы выполнить привязку и сортировку данных вручную, чтобы я мог остановить выполнение неправильной сортировки. Какие-нибудь мысли?
1 ответ
Я решил это, расширив событие Textbox.OnTextChanged следующим образом:
protected void tbTo_TextChanged(object sender, EventArgs e)
{
DateTime temp;
if(DateTime.TryParse(tbTo.Text,out temp)==false)
{
tbTo.Text = "";
}
}
Это срабатывает до сортировки GridView! Задача решена.