Telerik RadDock - Ajax-Update gibt einen JSON Fehler
Frage
Der Versuch, RadDock (öffnen / schließen sie) zu aktualisieren, indem es in Update aber kein Glück setzen .... ich die folgende Antwort bekommen.
189|error|500|Invalid JSON primitive: {"Top":179,"Left":583,"DockZoneID":"","Collapsed":false,"Pinned"
: false, "Resizable": false, "Geschlossen": false, "Breite": "300px", "Höhe": null, "expandedHeight": 0, "Index": - 1} . |
Hier ist der 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 hinter:
protected void lbtnUpdate_Click(object sender, EventArgs e)
{
if (this.RadDock1.Closed)
this.RadDock1.Closed = false;
else
this.RadDock1.Closed = true;
}
Was bin ich falsch hier?
Lösung
UPDATE: Sie sind nicht etwas falsch in Ihrem Code zu tun. Ich war in der Lage, dieses Problem zu duplizieren beiden Updates und RadAjaxManager verwenden. Nach Telerik Unterstützung, ist dies eine „Einschränkung“ in der RadDock Kontrolle. Mehr wie ein Fehler in meiner Meinung nach.
Hier ist, was er sagt, in ihrem Support-Seite Forum: Non-dockt Docks geklont und ungültige JSON primitive
Die RadDock Steuerung ist kein Standard Kontrolle und es gibt einige Einschränkungen wenn es über Ajax aktualisiert. Wenn du wollen eine RadDock über Ajax bearbeiten Sie aktualisieren sollten alle RadDockZones und alle RadDocks sollte angedockt werden.
Der Fehler, den Sie erleben, ist aufgrund dass Sie ein schwebendes RadDock aktualisieren mit AJAX. Beim Ziehen des Docks Sie bewegen sie außerhalb des Update-Panel und dies bewirkt, dass AJAX funktioniert nicht richtig wie es versucht, das Dock neu an der Ort, es vorher befand. Auf diese Weise zwei Docks mit der gleichen ID Auf der Seite erscheinen und dies führt zu eine Ausnahme. Dies ist ein häufiges Problem für alle Kontrollen, die bewegt werden konnte im DOM.
Ich war in der Lage, um Ihren Code Arbeit zu machen, indem die RadDock in einem RadDockZone Einwickeln und die DockMode Eigenschaft auf „Angedockt“. Wenn ich aber das Dock aus der Zone ziehen, lassen Sie es schwimmend und klicken Sie auf die Schaltfläche „Aktualisieren“, erscheint der Fehler auf.
<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>
Andere Tipps
Ich habe ein paar RadDocks in einem RadDockLayout schwimmen. Ajax funktioniert, wenn ich die RadDock aktualisieren, die RadDockLayout oder das Hauptfeld, das das RadDockLayout durch das RadAjaxManager Objekt umschließt.
Beispiel:
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="mainPanel" />
</UpdatedControls>
</telerik:AjaxSetting>