ASP.NET GridView - как включить декларативную проверку - PullRequest
1 голос
/ 16 мая 2010

Можно ли включить проверку в ASP.NET GridView чисто декларативно?

Что я пробовал:

  • GridView, связанный с ObjectDataSource с определенными SelectMethod и UpdateMethod

  • GridView содержит несколько столбцов ReadOnly BoundField и TemplateField, EditTemplate которого содержит TextBox и RegularExpressionValidator, который допускает только числовой ввод в TextBox.

  • GridView также содержит CommandField с ShowEditButton = true и CausesValidation = true.

Если я нажимаю «Изменить», введите недопустимое значение, затем нажмите «Сохранить», появляется PostBack, и на сервере выдается исключение (строка ввода была в неправильном формате).

Конечно, я могу избежать этого, добавив код проверки в обработчик событий RowUpdating на сервере (см. Ниже), но существует ли какой-либо декларативный способ заставить проверку выполняться без добавления этого кода?

protected void MyGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    Page.Validate("MyValidationGroup");
    if (!Page.IsValid)
    {
        e.Cancel = true;
    }
}

1 Ответ

0 голосов
/ 17 мая 2010

Вам нужен этот код.

"В дополнение к проверке на стороне клиента важно также вызывать Page.IsValid при обработке события обратной передачи."

http://weblogs.asp.net/rajbk/archive/2007/03/15/page-isvalid-and-validate.aspx

обновление

Чтобы избежать кода котельной пластины, все страницы можно наследовать от базового класса, а все пользовательские элементы управления - от другого базового класса. Базовый класс будет иметь общую логику (аналогичную приведенной выше). Затем вам нужно либо вручную подключить его, либо пройти по дереву управления и автоматически подключить события.

Я бы лично придерживался того, что у вас сейчас есть.

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