Question

Essayer de mettre à jour RadDock (l’ouvrir / le fermer) en le mettant dans UpdatePanel, mais pas de chance .... Je reçois la réponse suivante.

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

: false, "Resizable": false, "Closed": false, "Width": "300px", "Height": null, "ExpandedHeight":: 0, "Index": - 1} . |

Voici le code:

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

Code derrière:

    protected void lbtnUpdate_Click(object sender, EventArgs e)
{

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

Qu'est-ce que je fais mal ici?

Était-ce utile?

La solution

UPDATE: vous ne faites rien de mal dans votre code. J'ai pu dupliquer ce problème en utilisant UpdatePanel et RadAjaxManager. Selon le support Telerik, il s'agit d'une "limitation". dans le contrôle RadDock. Plus comme un bug à mon avis.

Voici ce qui est écrit sur le forum de la page de support: Docks non ancrés clonés et primitive JSON non valide

  

Le contrôle RadDock n’est pas un standard   contrôler et il y a quelques limitations   quand il est mis à jour via ajax. Si vous   vouloir mettre à jour un RadDock via ajax vous   devrait mettre à jour tous les RadDockZones et tous   Les radDock doivent être amarrés.

     

L'erreur que vous rencontrez est due à   que vous mettez à jour un RadDock flottant   avec AJAX. Lorsque vous faites glisser le quai vous   déplacez-le en dehors du panneau de mise à jour et   cela provoque AJAX ne fonctionne pas correctement   comme il tente de recréer le quai à   l'endroit où il se trouvait auparavant.   De cette façon, deux quais avec le même identifiant   apparaissent sur la page et cela conduit à   une exception. C'est un problème commun   pour tous les contrôles qui pourraient être déplacés   dans le DOM.

J'ai pu faire fonctionner votre code en enveloppant RadDock dans une zone RadDockZone et en définissant la propriété DockMode sur "Docked". Si, toutefois, je fais glisser le quai hors de la zone, laissez-le flotter et cliquez sur le bouton "Mettre à jour". bouton, l'erreur réapparaît.

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

Autres conseils

J'ai un couple de RadDock flottant dans un RadDockLayout. Ajax fonctionne si je mets à jour RadDock, RadDockLayout ou le panneau principal qui englobe RadDockLayout dans l'objet RadAjaxManager.

Ex:

<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
    <UpdatedControls>
        <telerik:AjaxUpdatedControl ControlID="mainPanel" />
    </UpdatedControls>
</telerik:AjaxSetting>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top