Это единственный способ заставить ObjectDataSource ...? - PullRequest
2 голосов
/ 11 августа 2009

Привет,


1) Я предполагаю, что ObjectDataSource автоматически связывается с источником данных только при первом запросе, но не при обратных передачах (иначе Событие ObjectDataSource.Selecting будет также запускаться при обратных передачах, но это не так. «т):

A) Таким образом, единственный способ заставить ObjectDataSource также выполнять привязку к обратным передачам - это вручную вызвать DataBind () ?


2) Если предположить, что DropDownList1 имеет DataSourceID , установленный на ObjectDataSource1 , то при первой загрузке страницы ObjectDataSource1 автоматически вызовет DropDownList1.DataBind () (после события Page.PreRender ) и вставка полученных данных.


A) Но что если мы также вручную вызовем DropDownList1.DataBind () при первой загрузке страницы:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack) DropDownList1.DataBind();
}


ObjectDataSource1 каким-то образом заметит, что DropDownList1.DataBind () уже был вызван и, следовательно, не будет автоматически вызывать DropDownList1.DataBind () ?


B) Обычно ObjectDataSource1.Selecting Событие запускается после Page.Prerender event. Но что если DropDownList1.DataBind () вызывается внутри Page_Load ()

Будет ли в этом случае ObjectDataSource1.Selecting событие сработать до Page.PreRender ?


1074 * спасибо *

1 Ответ

3 голосов
/ 12 августа 2009

Будет ли в этом случае событие ObjectDataSource1.Selecting запускаться до Page.PreRender?
Да, он вызывается до Page.PreRender.
Причина: Каждый связанный с данными элемент управления, для которого установлено свойство DataSourceID, вызывает свой метод DataBind в событии prerender,

проверить страницу жизненного цикла http://msdn.microsoft.com/en-us/library/ms178472.aspx

http://dotnetshoutout.com/Data-Binding-Events-for-Data-Bound-Controls-in-ASPNet

Так как событие load вызывается перед предварительным отображением, а когда вызывается метод databind, в вашей ситуации выбранный объект-источник данных запускает событие перед предварительным отображением

...