質問

RadDockの更新(オープン/クローズ)をUpdatePanelに入れて更新しようとしていますが、運がありません。

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

ここで何が間違っているのですか?

役に立ちましたか?

解決

更新:コードに何も問題はありません。 UpdatePanelとRadAjaxManagerの両方を使用して、この問題を再現することができました。 Telerikのサポートによると、これは「制限」です。 RadDockコントロール内。私の意見ではバグのようです。

サポートページフォーラムの内容は次のとおりです。クローン化された非ドッキングドックと無効なJSONプリミティブ

  

RadDockコントロールは標準ではありません   制御し、いくつかの制限があります   ajaxを介して更新されたとき。もし、あんたが   ajax経由でRadDockを更新したい   すべてのRadDockZonesとすべてを更新する必要があります   RadDocksをドッキングする必要があります。

     

発生するエラーの原因は   フローティングRadDockを更新すること   AJAXで。ドックをドラッグすると   更新パネルの外に移動し、   これにより、AJAXが正しく機能しなくなります   でドックを再作成しようとします   以前に配置された場所。   このようにして、同じIDを持つ2つのドック   ページに表示され、これにより   例外。これはよくある問題です   移動できるすべてのコントロール   DOMで。

RadDockZone内にRadDockをラップし、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>

他のヒント

RadDockLayout内にいくつかのRadDocksがあります。 RadDock、RadDockLayout、またはRadAjaxManagerオブジェクトを介してRadDockLayoutをラップするメインパネルを更新すると、Ajaxが機能します。

例:

<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
    <UpdatedControls>
        <telerik:AjaxUpdatedControl ControlID="mainPanel" />
    </UpdatedControls>
</telerik:AjaxSetting>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top