6

Ho un controllo server personalizzato che sembra funzionare correttamente finché non lo metto in un UpdatePanel. Una volta all'interno di UpdatePanel continua a funzionare correttamente, ma UpdatePanel ora esegue postback completi quando il controllo del server personalizzato esegue un postback.Controllo server personalizzato causa postback completi all'interno di UpdatePanel

Devo fare qualcosa per rendere il mio controllo server personalizzato i postback asincroni all'interno di un UpdatePanel?

Ecco il codice rilevante che causa un postback completo. Ecs: il controllo del cercapersone è il controllo personalizzato che causa postback completi sull'evento OnCommand anche se si trova su UpdatePanel.

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server"> 
    <ContentTemplate> 
     <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
     <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
     </asp:Repeater> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

Sarei interessato anche alla risposta a questo. Ho un controllo personalizzato che implementa IPostBackDataHandler che non farà un postback parziale all'interno di un UpdatePanel. Ci deve essere una salsa segreta che fa sì che un controllo venga registrato come trigger quando si utilizza la proprietà UseChildrenAsTriggers. –

+0

cosa succede se si aggiunge un trigger esplicito sul pannello di aggiornamento per eseguire un postback asynch sull'evento di customcontrol? – AndreasKnudsen

risposta

0

Siamo spiacenti ... non è possibile visualizzare il resto della pagina.

Hai anche uno ScriptManager sulla tua pagina?

+0

Sì, mi spiace che il codice sia stato interrotto per qualche motivo. Risolto ora. ScriptManager è presente come parte della Pagina Master. – DarenTx

0

Il controllo personalizzato implementa INamingContainer e il postback proviene da un altro controllo all'interno di tale contenitore di denominazione?

Ho trovato un limite del contenitore di nomi tra UpdatePanel e il controllo del codice sorgente può causare questo comportamento.

0

Una possibilità potrebbe essere come AndreasKnudsen suggerisce come l'aggiunta di un AsyncPostBackTrigger al vostro pannello

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server"> 
    <ContentTemplate> 
    <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
    <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
    </asp:Repeater> 
    </ContentTemplate> 
    <Triggers> 
    <AsyncPostBackTrigger ControlID="ClosedIssuesPager" EventName="Command" /> 
    </Triggers> 
</asp:UpdatePanel> 

Un'altra opzione è quella di provare ad aggiungere ChildrenAsTriggers al tag UpdatePanel

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" ChildrenAsTriggers="true"> 
+1

ChildrenAsTriggers è true come impostazione predefinita, quindi l'aggiunta di questo non sarà diversa. – awe

1

Mettere la modalità di aggiornamento del vostro aggiornamento pannello a condizione.

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
     <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
     </asp:Repeater> 
    </ContentTemplate> 
</asp:UpdatePanel> 
1

Non si specifica il tipo di controlli utilizzati nel controllo personalizzato. Sono pulsanti o elenchi puntati o qualcos'altro? Se sono pulsanti, è necessario assicurarsi che le loro proprietà UseSubmitBehavior siano impostate su False.

Inoltre, si sta andando a voler per registrare i tuoi comandi con ScriptManager della pagina tramite ScriptManager.RegisterAsyncPostBackControl

1

Ho avuto un problema simile e ha scoperto che aggiungendo l'attributo ClientIDMode = "Auto-ID" per il mio tag di controllo utente risolto il problema .

Problemi correlati