Почему Asp.Net WebForms GridView выполняет незаданный DataBind () в OnPreRender ()? - PullRequest
0 голосов
/ 22 октября 2010

Я работаю с GridView в UpdatePanel и выполняю привязку данных к ObjectDataSource, используя свойство DataSourceID.Все работает отлично, за исключением случаев, когда я выполняю проверку данных в источнике объекта и возвращаю false из обновления.Я использую это, чтобы установить содержимое и видимость другого элемента управления в GridView.Однако это никогда не отображается, поскольку GridView выполняет скрытое DataBind() в OnPreRender(), даже если EnableViewState = "true" (через BaseDataBoundControl ).

Есть ли простой способ просто повернутьэто постороннее DataBind() выключено?Я использовал отражение, чтобы установить для поля _requiresDataBind в BaseDataBoundControl значение false, и все работает так, как я хотел бы, чтобы это работало, но этот подход вряд ли подходит для производства.Является ли подкласс GridView единственным способом?Я просто что-то упустил?

1 Ответ

0 голосов
/ 28 октября 2010

Очевидно, что нет никакого способа обойти это, если вы не привязываете данные к сетке.В итоге я создал подкласс GridView, добавив логическое свойство с именем «CancelDataBind» и переопределив метод с именем EnsureDataBind () и добавив логику для проверки свойства CancelDataBind перед вызовом базовой реализации.Это сработало хорошо.

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