2011-07-12 10 views
8

Ho un pannello di aggiornamento con UpdateMode di Conditional e ChildrenAsTriggers impostato su false. Voglio soltanto alcuni controlli per causare un postback asincrono:Impossibile trovare un controllo con ID per il trigger in UpdatePanel

<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> 

sto ottenendo il seguente errore quando provo e caricare la pagina:

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

Dal momento che il mio controllo btnAddSomething è in un ripetitore e potrebbe non essere lì subito agisce come se non esistesse. Come posso aggirare questo?

risposta

12

Poiché il controllo si trova nello repeater control e non rientra nello scope su Trigger collection. Tra l'altro, non è necessario che lo add trigger perché il controllo dei pulsanti è già nello UpdatePanel, verrà aggiornato quando si fa clic sul pulsante.

Modifica: C'è una soluzione se si desidera veramente aggiornare il proprio pannello di aggiornamento updPnlMain. Puoi inserire un altro pannello di aggiornamento e inserire il tuo pulsante in quel pannello. per esempio.

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

e poi semplicemente chiamare il metodo updPnlMain.Update(); in btnAddSomething_Click evento.

Sarà effettivamente fare quello che state cercando :)

+1

Non se ChildrenAsTriggers = falsi ... che è quello che ho detto nella domanda. – Dismissile

+0

Come posso ottenere che i miei ripetitori controllino che i bambini siano nello scope allora? – Dismissile

+0

Si desidera aggiornare solo UpdatePanel updPnlMain, onclick del pulsante? –

Problemi correlati