Telerik RadDock - обновление ajax возвращает ошибку JSON - PullRequest
1 голос
/ 30 апреля 2009

Попытка обновить RadDock (открыть / закрыть), поместив его в UpdatePanel, однако не повезло .... Я получаю следующий ответ.

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

: ложь, "Resizable": ложь, "Закрыто": ложь, "Ширина": "300px", "Высота": нулевой, "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;
}

Что я здесь не так делаю?

Ответы [ 2 ]

4 голосов
/ 06 мая 2009

ОБНОВЛЕНИЕ: Вы не делаете ничего плохого в своем коде. Мне удалось продублировать эту проблему, используя UpdatePanel и RadAjaxManager. Согласно поддержке Telerik, это «ограничение» в элементе управления RadDock. Больше похоже на ошибку на мой взгляд.

Вот что говорится на их форуме поддержки: Клонированные док-станции без клонов плюс недопустимый примитив JSON

Элемент управления RadDock не является стандартным контролировать и есть некоторые ограничения когда он обновляется через ajax. если ты хочу обновить RadDock через AJAX вам следует обновить все RadDockZones и все RadDocks должен быть пристыкован.

Ошибка, которую вы испытываете из-за что вы обновляете плавающий RadDock с AJAX. При перетаскивании дока вы переместите его за пределы панели обновления и это приводит к тому, что AJAX не работает должным образом как он пытается воссоздать док в место, где он был ранее расположен. Таким образом, два дока с одинаковым идентификатором появляются на странице, и это приводит к исключение. Это распространенная проблема для всех элементов управления, которые могут быть перемещены в ДОМ.

Мне удалось заставить ваш код работать, обернув 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>
0 голосов
/ 28 декабря 2011

У меня есть пара RadDocks, плавающих внутри RadDockLayout. Ajax работает, если я обновляю RadDock, RadDockLayout или главную панель, которая оборачивает RadDockLayout через объект RadAjaxManager.

Ex:

<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
    <UpdatedControls>
        <telerik:AjaxUpdatedControl ControlID="mainPanel" />
    </UpdatedControls>
</telerik:AjaxSetting>
...