DataBind и Postback - PullRequest
       12

DataBind и Postback

6 голосов
/ 06 мая 2009

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

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

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

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

Ответы [ 3 ]

12 голосов
/ 06 мая 2009

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

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

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

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

9 голосов
/ 10 июня 2010

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

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

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

Context

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

Использование SelectMethod и SelectCountMethod объекта ObjectDataSource

2 голосов
/ 06 мая 2009

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

...