Сетка с привязанным параметром 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! Задача решена.

Другие вопросы по тегам