Por que o painel de atualização fazer um post volta completa para controle personalizado?

StackOverflow https://stackoverflow.com/questions/616884

Pergunta

Eu tenho um controle personalizado bastante complexo - o controle personalizado tem um par de painéis de atualização nele

.

Eu estou tentando usar o controle como este dentro de um painel de atualização:

    <asp:UpdatePanel ID="up1" runat="server">
    <ContentTemplate>
     <asp:Button ID="btn1" runat="server" Text="Sample Button" />&nbsp;&nbsp;<asp:Label ID="lblTime" runat="server"></asp:Label>    
     <cc1:MyCustomControl ID="MyCustomControl1" runat="server" >
    </cc1:MyCustomControl>
    </ContentTemplate>
</asp:UpdatePanel>

Quando clico no botão no painel de atualização, ele faz um assíncrono posto de volta e não há "flicker" tela Quando eu clicar em um botão no meu controle personalizado na página pisca e faz um posto de volta completa.

Dentro do controle personalizado, existem painéis de atualização que estão tentando fazer postbacks completos (baseado em gatilhos).

Como posso fazer ao nível da página UpdatePanel não fazer um postback completo não importa o que está acontecendo no interior do controle personalizado?

Foi útil?

Solução 2

Descobri a solução problema semelhante a este: Como posso obter um UpdatePanel para interceptar um CompositeControl DropDownList

Com exceção do meu controle causando a postagem foi em um updatepanel com um gatilho postback completo. Eu era capaz de puxar o controle fora por isso não foi aninhada com em painéis de atualização e que resolvê-lo.

Outras dicas

Você já pensou definição sobre explicitamente um asp:. AsyncPostBackTrigger com o controle btn1 no controle up1 UpdatePanel

<asp:UpdatePanel ID="up1" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btn1" EventName="Click" />
    </Triggers>
    <ContentTemplate>     
        <asp:Button ID="btn1" runat="server" Text="Sample Button" />  
        <asp:Label ID="lblTime" runat="server"></asp:Label>         
        <cc1:MyCustomControl ID="MyCustomControl1" runat="server" />                 
    </ContentTemplate>
</asp:UpdatePanel>

Editar: Como você tentou chamar explicitamente o método Update no evento OnClick do botão para o painel de atualização? Isso inclui os painéis de atualização incorporados dentro do controle personalizado.

Gostaria em primeiro lugar olhar se há algum outro problema com o controle personalizado causando o postback de página inteira, como em qualquer caso, o que deveria estar acontecendo é que todo o refresca painel de atualização (ainda com o Ajax).

Depois disso, basta olhar para a seção Controles Assentamento UpdatePanel deste: http://msdn.microsoft.com/en-us/library/bb398867 aspx #

Certifique-se também de ter o controle ScriptManager com o conjunto de propriedades EnablePartialRendering para true.

No UpdatePanel, defina o ChildrenAsTriggers="true" propriedade. Isto diz o UpdatePanel para interceptar todas invocações PostBack que se originam de dentro do UpdatePanel.

Você também pode querer explorar a UpdateMode propriedade , que determina que tipos de eventos desencadear uma atualização. (Por padrão, um UpdatePanel irá atualizar se qualquer outro painel sobre a tela fica atualizado. Este lançou-me por algum tempo até que eu percebesse o que estava acontecendo.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top