2010-10-22 5 views
0

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

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

ответ

0

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

Смежные вопросы