2016-04-21 16 views
0

Ich habe eine ColorPickerExtender in einem UpdatePanel zusammen mit einigen anderen Kontrollen. Die anderen Steuerelemente führen partielle Postbacks wie erwartet aus, aber das ColorPickerExtender führt einen vollständigen Postback aus, obwohl es sich in dem UpdatePanel befindet. Hier ist der relevante ASPX:obout: ColorPickerExtender in UpdatePanel verursacht volle postback

<asp:Content ContentPlaceHolderID="cphMainDivContentPlaceHolder" runat="server"> 
    <asp:UpdatePanel ID="upGeneralLayoutData" runat="server"> 
     <ContentTemplate> 
      <asp:TextBox ID="txtLayoutName" runat="server" 
       ToolTip="Enter a name for this layout (recommend you use a unique name)" 
       OnTextChanged="txtLayoutName_TextChanged" 
       AutoPostBack="true" 
       MaxLength="255" /> 
      <obout:ColorPickerExtender ID="cpeLayoutBackgroundColor" runat="server" 
       OnClientOpen="onColorPickerExtenderOpen" 
       AutoPostBack="true" 
       TargetProperty="style.backgroundColor" 
       OnColorPostBack="cpeLayoutBackgroundColor_ColorPostBack" 
       PopupButtonID="txtLayoutBackgroundColor" 
       TargetControlID="txtLayoutBackgroundColor" 
       HexView="False" 
       PickButton="False" /> 
      <asp:TextBox ID="txtLayoutBackgroundColor" runat="server" 
       ToolTip="Select the background color for this layout" 
       CssClass="ColorPickerExtenderTextBox" 
       style="cursor: pointer" 
       Width="50" 
       ReadOnly="True" /> 
      <br /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</asp:Content> 

Als ich die Frage formulierte, ich in der Lage war, die Antwort herauszufinden (siehe unten) - statt die Frage nach dem Wegwerfen, verließ ich es hier für andere zu verwenden.

Antwort

0

Es stellt sich heraus, dass die ColorPickerExtender nicht als asynchrone Postback-Steuerelement registriert ist. Ich habe den Hinweis von this post bekommen. Ich bin mir nicht sicher, warum es nicht als Asynchron-Steuerung nicht registrieren, wenn die anderen tun, aber die Lösung ist einfach genug - fügen Sie einen <Triggers> Abschnitt, der es als async bezeichnet explizit, etwa so:

<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="cpeLayoutBackgroundColor" EventName="ColorPostBack" /> 
</Triggers> 
Verwandte Themen