6

Ich habe ein benutzerdefiniertes Server-Steuerelement, das scheint gut zu funktionieren, bis ich es in einem UpdatePanel. Einmal innerhalb des UpdatePanels funktioniert es gut, aber das UpdatePanel macht jetzt volle Postbacks, wenn mein benutzerdefiniertes Server Control ein Postback macht.Custom Server Control verursacht volle Postbacks innerhalb von UpdatePanel

Muss ich etwas tun, damit mein benutzerdefiniertes Serversteuerelement in einem UpdatePanel asynchrone Postbacks ausführt?

Hier ist der relevante Code, der ein vollständiges Postback verursacht. Das Ecs: Pager-Steuerelement ist mein benutzerdefiniertes Steuerelement, das vollständige Postbacks für das OnCommand-Ereignis verursacht, obwohl es sich im UpdatePanel befindet.

<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

Ich würde die Antwort auf diese auch interessiert sein. Ich habe ein benutzerdefiniertes Steuerelement, das IPostBackDataHandler implementiert, das ein partielles Postback in einem UpdatePanel nicht ausführt. Es muss eine geheime Soße geben, die bewirkt, dass ein Steuerelement als Auslöser registriert wird, wenn Sie die UseChildrenAsTriggers-Eigenschaft verwenden. –

+0

Was passiert, wenn Sie einen expliziten Trigger für das Updatepanel hinzufügen, um ein asynchrones Postback für das Event des customcontrols auszuführen? – AndreasKnudsen

Antwort

0

Sorry ... kann den Rest der Seite nicht sehen.

Haben Sie auch einen ScriptManager auf Ihrer Seite?

+0

Ja, leider wurde der Code aus irgendeinem Grund abgeschnitten. Jetzt behoben. ScriptManager ist als Teil der Masterseite vorhanden. – DarenTx

0

Implementiert das benutzerdefinierte Steuerelement INamingContainer und stammt das Postback von einem anderen Steuerelement in diesem Benennungscontainer?

Ich fand eine Namensgebungscontainer Grenze zwischen dem UpdatePanel und der Quellcodeverwaltung kann dieses Verhalten verursachen.

0

Eine Option könnte sein, wie AndreasKnudsen wie das Hinzufügen eines AsyncPostBackTrigger zu Ihrem Panel schlägt

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

Eine weitere Option zu versuchen, ist zu ChildrenAsTriggers zu Ihrem Update Tag

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

ChildrenAsTriggers ist als Standard wahr, also würde das Hinzufügen nicht anders sein. – awe

1

Setzen Sie den Update-Modus Ihres Update hinzugefügt Panel zu bedingten.

<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

Sie geben nicht an, welche Steuerelemente in Ihrem benutzerdefinierten Steuerelement verwendet werden. Sind sie Knöpfe oder Dropdowns oder etwas anderes? Wenn es sich um Schaltflächen handelt, müssen Sie sicherstellen, dass ihre UseSubmitBehavior-Eigenschaften auf False festgelegt sind.

Auch Sie gehen zu wollen, um Ihre Kontrollen mit der Seite des Script über ScriptManager.RegisterAsyncPostBackControl

1

Ich hatte ein ähnliches Problem registrieren und festgestellt, dass das Attribut ClientIDMode Zugabe = „AutoID“ zu meiner Benutzersteuer Tag das Problem gelöst .