Pergunta

Tentando atualizar RadDock (abrir / fechar-lo), colocando-o em UpdatePanel porém sem sorte .... eu estou recebendo a seguinte resposta.

189|error|500|Invalid JSON primitive: {"Top":179,"Left":583,"DockZoneID":"","Collapsed":false,"Pinned"

: false, "Resizable": false, "fechado": false, "largura": "300px", "altura": null, "expandedHeight": 0, "Index": - 1} . |

Aqui está o código:

<asp:UpdatePanel ID="upanelDock" runat="server">
    <ContentTemplate>
        <telerik:RadDock ID="RadDock1" runat="server" Width="300px">
            <TitlebarTemplate>
                <h2>
                    this is a dock</h2>
            </TitlebarTemplate>
            <ContentTemplate>
                some content here
                <br />
                some content here
                <br />
                some content here
                <br />               
            </ContentTemplate>
        </telerik:RadDock>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="lbtnUpdate" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>
<asp:LinkButton ID="lbtnUpdate" runat="server" OnClick="lbtnUpdate_Click">update</asp:LinkButton>

código por trás:

    protected void lbtnUpdate_Click(object sender, EventArgs e)
{

    if (this.RadDock1.Closed)
        this.RadDock1.Closed = false;
    else
        this.RadDock1.Closed = true;
}

O que estou fazendo de errado aqui?

Foi útil?

Solução

UPDATE: Você não está fazendo errado nada em seu código. Eu era capaz de duplicar este problema usando tanto UpdatePanel e RadAjaxManager. De acordo com suporte Telerik, esta é uma "limitação" no controle RadDock. Mais como um erro na minha opinião.

Aqui está o que diz em seu Fórum Página de suporte: não-ancorado docas clonado mais inválido JSON primitivo

O controle RadDock não é um padrão controlar e existem algumas limitações quando ele é atualizado via ajax. Se vocês deseja atualizar uma RadDock via ajax você deve atualizar todos os RadDockZones e tudo RadDocks deve ser encaixado.

O erro que você experiência é devido a que você atualizar um RadDock flutuante com AJAX. Ao arrastar a ancorar mover-se para fora do painel e a actualização isso faz com que AJAX não está funcionando corretamente uma vez que as tentativas para recriar o cais o lugar foi localizado anteriormente. Desta forma duas docas, com o mesmo id aparecer na página e isso leva a uma exceção. Esse é um problema comum para todos os comandos que podem ser movidas no DOM.

Eu era capaz de fazer o seu trabalho de código envolvendo a RadDock dentro de um RadDockZone e definindo a propriedade DockMode para "ancorado". Se, no entanto, eu arrastar a doca fora da zona, deixá-lo flutuando e clique no botão "Update", ao reaparecimento de erro.

<asp:UpdatePanel ID="upanelDock" runat="server">
    <ContentTemplate>
       <telerik:RadDockZone runat="server">
        <telerik:RadDock ID="RadDock1" runat="server" Width="300px" 
                                                      DockMode="Docked">
            <TitlebarTemplate>
                <h2>
                    this is a dock
                </h2>
            </TitlebarTemplate>
            <ContentTemplate>
                some content here
                <br />
                some content here
                <br />
                some content here
                <br />               
            </ContentTemplate>
        </telerik:RadDock>
      </telerik:RadDockZone>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="lbtnUpdate" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>
<asp:LinkButton ID="lbtnUpdate" runat="server"
           OnClick="lbtnUpdate_Click">update</asp:LinkButton>

Outras dicas

Eu tenho um par RadDocks flutuando dentro de um RadDockLayout. Ajax funciona se eu atualizar o RadDock, o RadDockLayout, ou o painel principal que envolve o RadDockLayout através do objeto RadAjaxManager.

Ex:

<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
    <UpdatedControls>
        <telerik:AjaxUpdatedControl ControlID="mainPanel" />
    </UpdatedControls>
</telerik:AjaxSetting>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top