2009-05-06 2 views
6

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

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

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

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

ответ

12

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

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

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

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

2

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

8

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

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

Взял меня некоторое время, чтобы понять это, но теперь wverything отлично работает.

Контекст

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

Использование SelectMethod и SelectCountMethod из ObjectDataSource

+0

Спасибо за предложение. Я пошел с предложением Гэвина просто избегать беспорядка. С тех пор моя компания переключилась на Telerik, которая поддерживает действительно чистый метод привязки кода, называемый «NeedDataSource».Тем не менее, если мне нужно будет вернуться назад, я попробую. –