Telerik RadDock - ajax更新返回JSON错误
题
尝试通过将其置于UpdatePanel来更新RadDock(打开/关闭它)但是没有运气....我得到以下响应。
189|error|500|Invalid JSON primitive: {"Top":179,"Left":583,"DockZoneID":"","Collapsed":false,"Pinned"
:假,"可调整":假,"关闭":假,"宽度":" 300像素","身高":空," ExpandedHeight":0,"索引": - 1} 。|
以下是代码:
<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>
代码背后:
protected void lbtnUpdate_Click(object sender, EventArgs e)
{
if (this.RadDock1.Closed)
this.RadDock1.Closed = false;
else
this.RadDock1.Closed = true;
}
我在这里做错了什么?
解决方案
更新:您的代码没有出错。我能够使用UpdatePanel和RadAjaxManager复制此问题。根据Telerik的支持,这是一个“限制”。在RadDock控件中。更像是我认为的错误。
以下是它们在支持页面论坛中所说的内容:克隆的非停靠码头加上无效的JSON原语
RadDock控件不是标准 控制并存在一些局限性 当它通过ajax更新时。如果你 想通过ajax更新RadDock 应该更新所有RadDockZones和所有 RadDocks应该停靠。
您遇到的错误是由于 您更新浮动RadDock 用AJAX。拖动你的时候 将它移到更新面板外面 这会导致AJAX无法正常工作 因为它试图重建码头 它以前所在的地方。 通过这种方式,两个码头具有相同的ID 出现在页面上,这导致 一个例外。这是一个常见问题 对于可以移动的所有控件 在DOM中。
我能够通过将RadDock包装在RadDockZone中并将DockMode属性设置为“Docked”来使代码工作。但是,如果我将Dock拖出区域,将其保持浮动状态并单击“更新”按钮。按钮,错误再次出现。
<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>
其他提示
我有一些RadDocks漂浮在RadDockLayout中。如果我更新RadDock,RadDockLayout或通过RadAjaxManager对象包装RadDockLayout的主面板,Ajax会起作用。
例如:
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="mainPanel" />
</UpdatedControls>
</telerik:AjaxSetting>