Вопрос

Это общие вопросы о том, как работает DataBind...

У меня есть простая страница с GridView, которая привязана (в коде aspx) к ObjectDataSource.

Я могу просмотреть функцию Select(), вызываемую ObjectDataSource, чтобы увидеть, что она вызывается при начальной загрузке и при каждом обратном сообщении.У меня есть некоторая логика, которая происходит при ответных сообщениях и которая влияет на данные GridView, и я хочу вызвать GridView.DataBind() позже в ответном сообщении, после того как я внесу некоторые изменения.

Есть ли способ предотвратить автоматическую повторную привязку, которая происходит при каждом обратном сообщении?Означает ли это, что я не могу использовать ObjectDataSource для этого элемента управления?

Это было полезно?

Решение

Вы правы в том, что детальный контроль, который вы ищете, невозможен и требует кода.Объекты источников данных ASP.NET — это не что иное, как заноза в заднице.Вы обнаружите, что по мере их использования подобные ситуации будут возникать снова и снова.

Некоторые из проблем, которые вы обнаружите:

  • Не строго типизированный
  • Негибкий (как вы заметили)
  • Запутать код представления

Я начал выполнять весь доступ к данным в коде и не оглядывался назад.

Другие советы

Я тоже боролся с этой автоматической привязкой и решил опубликовать свое решение здесь:

  1. удалите «DataSourceID» со страницы ASPX, если он не установлен, автоматическая привязка отсутствует.
  2. задавайте DataSourceID в CodeBehind только тогда, когда требуется привязка данных:myGridView.DataSourceID = "MyDataSource";
  3. не вызывайте myGridView.DataBind() явно, привязка данных происходит автоматически в PreRender

Мне потребовалось некоторое время, чтобы понять это, но теперь все работает нормально.

Контекст

Я использую ObjectDatasource, потому что он обрабатывает всю информацию. пейджинг и сортировка Gridview автоматически для меня.Я использую уровень данных с Linq2SQL и использую его методы Skip() и Take() для загрузки только того объема данных, который необходим для заполнения одной страницы GridView.

Используя ВыбратьМетод и СелектКаунтМетод из ObjectDataSource

Да.Если вам нужен такой контроль над тем, когда происходит привязка данных, вам нужно сделать это в коде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top