2009-04-29 21 views
1

嘗試通過將其放入UpdatePanel來更新RadDock(打開/關閉它),但沒有運氣....我收到以下回復。Telerik RadDock - ajax更新返回一個JSON錯誤

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

什麼我錯在這裏做什麼?

回答

4

更新:你沒有在你的代碼中做任何錯誤。我能夠使用UpdatePanel和RadAjaxManager複製這個問題。根據Telerik的支持,這是RadDock控件中的一個「限制」。更像是我認爲的一個錯誤。

下面是在他們的支持頁面論壇說:Non-docked Docks cloned plus Invalid JSON primitive

的RadDock控制不是一個標準 控制和有一定的侷限性 當它通過AJAX更新。如果你 想通過ajax更新RadDock,你應該更新所有的RadDockZones和所有的 RadDocks應該停靠。

您遇到的錯誤歸因於您使用AJAX更新浮動RadDock 的 。拖動碼頭時,您將 移動到更新面板外部,並且 會導致AJAX無法正常工作 ,因爲它會嘗試重新創建之前所在位置的碼頭 。 通過這種方式,頁面上出現兩個相同編號爲 的碼頭,這導致 出現異常。對於可以在DOM中移動 的所有控件,這是一個常見問題 。

我能夠通過將RadDock封裝在RadDockZone中並將DockMode屬性設置爲「停靠」來使您的代碼工作。但是,如果將塢站拖出區域,將其懸空並單擊「更新」按鈕,則會再次出現該錯誤。

<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

我相信我與Telerik的AjaxManager嘗試過了,得到了同樣的反應。 – 2009-05-06 15:38:10

0

我有一對RadDocks在RadDockLayout內部浮動。如果我更新RadDock,RadDockLayout或通過RadAjaxManager對象包裝RadDockLayout的主面板,Ajax就可以工作。

例:

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