2011-07-12 100 views
8

我有一個UpdateMode爲Conditional且ChildrenAsTriggers設置爲false的更新面板。我只想要一些控件,以引起異步回:在UpdatePanel中找不到觸發器的ID帶有ID的控件

<asp:UpdatePanel ID="updPnlMain" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"> 
<ContentTemplate> 

     // ... 
     <asp:Repeater ID="rptListData" runat="server"> 
      <ItemTemplate> 
       <asp:Button ID="btnAddSomething" runat="server" OnClick="btnAddSomething_Click" /> 
      </ItemTemplate> 
     </asp:Repeater> 
     // ... 
</ContentTemplate> 
<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="btnAddSomething" EventName="Click" /> 
</Triggers> 
</asp:UpdatePanel> 

我收到以下錯誤,當我嘗試加載這個頁面:

A control with ID 'btnAddSomething' could not be found for the trigger in UpdatePanel 'updPnlMain'. 

由於我btnAddSomething控制是一箇中繼器,並可能不是馬上就有,它就像它不存在一樣。我怎樣才能解決這個問題?

回答

12

因爲您的控件位於repeater control之內,所以它不在Trigger collection的範圍之內。順便說一句,你不需要add trigger,因爲你的按鈕控件已經在UpdatePanel,它會在你點擊按鈕時更新。

編輯:有一個解決方案,如果你真的想更新你的updPnlMain更新面板。你可以放入另一個更新面板並將你的按鈕放在該面板中。例如

<asp:UpdatePanel ID="updButton" runat="server" UpdateMode="Conditional"> 
    <asp:Button ID="btnAddSomething" runat="server" OnClick="btnAddSomething_Click" /> 
</ContentTemplate> 

,然後簡單地調用btnAddSomething_Click事件updPnlMain.Update();方法。

它會怎麼做,你在找什麼:)

+1

若ChildrenAsTriggers =假的... ...這是我的問題時說。 – Dismissile

+0

我怎樣才能讓我的中繼器控制孩子在那個範圍內呢? – Dismissile

+0

你只想更新你的UpdatePanel updPnlMain,點擊按鈕? –

相關問題