1

尝试通过将其放入 UpdatePanel 来更新 RadDock(打开/关闭它)但是没有运气......我得到了以下响应。

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

这是代码:

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

我在这里做错了什么?

4

2 回答 2

5

更新:您的代码没有做错任何事情。我能够使用 UpdatePanel 和 RadAjaxManager 复制这个问题。根据 Telerik 支持,这是 RadDock 控件中的“限制”。在我看来更像是一个错误。

这是他们在支持页面论坛中所说的:克隆的非停靠码头加上无效的 JSON 原语

RadDock 控件不是标准控件,在通过 ajax 更新时存在一些限制。如果您想通过 ajax 更新 RadDock,您应该更新所有 RadDockZones 并且所有 RadDocks 都应该停靠。

您遇到的错误是由于您使用 AJAX 更新了浮动 RadDock。拖动停靠栏时,您将其移到更新面板之外,这会导致 AJAX 无法正常工作,因为它试图在之前所在的位置重新创建停靠栏。这样,页面上会出现两个具有相同 id 的停靠点,这会导致异常。这是所有可以在 DOM 中移动的控件的常见问题。

通过将 RadDock 包装在 RadDockZone 中并将 DockMode 属性设置为“Docked”,我能够使您的代码正常工作。但是,如果我将扩展坞拖出该区域,使其处于浮动状态并单击“更新”按钮,错误会再次出现。

<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>
于 2009-05-06T15:22:42.020 回答
0

我有几个 RadDocks 漂浮在 RadDockLayout 中。如果我通过 RadAjaxManager 对象更新 RadDock、RadDockLayout 或包装 RadDockLayout 的主面板,Ajax 就可以工作。

前任:

<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
    <UpdatedControls>
        <telerik:AjaxUpdatedControl ControlID="mainPanel" />
    </UpdatedControls>
</telerik:AjaxSetting>
于 2011-12-27T20:18:00.480 回答