2011-07-12 21 views
8

Tengo un panel de actualización que tiene UpdateMode de Conditional y ChildrenAsTriggers establecido en falso. Quiero solamente unos pocos controles para causar una devolución de datos asincrónica:No se pudo encontrar un control con ID para el desencadenador en 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> 

estoy recibiendo el siguiente error cuando intento cargar esta página:

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

Desde mi control btnAddSomething está en un repetidor y podría no estar allí de inmediato, actúa como si no existiera. ¿Cómo puedo evitar esto?

Respuesta

12

Porque su control está en el repeater control y está fuera del alcance del Trigger collection. Por cierto, no necesita add trigger porque su control de botón ya está en el UpdatePanel, se actualizará cuando haga clic en el botón.

Editar: Hay una solución si realmente desea actualizar su updPnlMain panel de actualización. Puede poner otro panel de actualización y colocar su botón en ese panel. p.ej.

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

y luego simplemente llamar al método updPnlMain.Update(); en btnAddSomething_Click evento.

Se hará realmente lo que busca :)

+1

No si ChildrenAsTriggers = false ... que es lo que dije en la pregunta. – Dismissile

+0

¿Cómo puedo obtener que mis controles de repetición estén dentro del alcance de los niños? – Dismissile

+0

¿Solo desea actualizar su UpdatePanel updPnlMain, al hacer clic en el botón? –

Cuestiones relacionadas