2012-11-26 49 views
0

我在Page_Init中添加了可變數量的更新面板。如何以編程方式添加UpdatePanel及其觸發器?

我的母版頁已經有腳本管理器了。

的問題是,當我嘗試添加一個觸發條件:

AsyncPostBackTrigger trig2 = new AsyncPostBackTrigger(); 

trig2.ControlID = ddl22.UniqueID; 

trig2.EventName = "SelectedIndexChanged"; 

up2.Triggers.Add(trig2); 

其中ddl22是一個DropDownList,事件似乎永遠不會觸發UpdatePanel的。

在UpdatePanel中,我有另一個DropDownList數據,當觸發發生時我想要更改它的數據。

有趣的是,在主頁面我有一個計時器。這個計時器只能觸發主控制器中的UpdatePanel,但它似乎觸發了我所有的更新面板。但是,即使觸發子頁面中的更新面板,第二個DropDownList也不會更改其數據。

將數據綁定到page_init中UpdatePanel中的DropDownList。它綁定到一個objectdatasource,它使用第一個DropDownList中的選定項作爲參數來確定它應該綁定的數據。

回答

1

你設置AutoPostBack="True"爲您的下拉列表?我懷疑這是問題。

還將您的更新面板模式設置爲條件 - UpdateMode="Conditional",這樣我就不會影響其他更新面板。

0

試試這個,

源代碼,

<asp:UpdatePanel ID="up2" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
    <asp:DropDownList ID="ddl1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddl1_SelectedIndexChanged"></asp:DropDownList>  
    <asp:DropDownList ID="ddl2" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddl2_SelectedIndexChanged"></asp:DropDownList> 
    </ContentTemplate> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="ddl2" /> 
    </Triggers> 
    </asp:UpdatePanel> 
0

您可以手動調用UpdatePanel進行刷新,而無需在postBack事件中指定觸發器。首先,set the UpdateMode property to 'Conditional',那麼你可以在你的更新面板上調用更新後面的代碼,如

MyUpdatePanel.Update(); 
相關問題