سؤال

محاولة تحديث RadDock (فتح/إغلاقه) عن طريق وضعه في UpdatePanel ولكن لم يحالفني الحظ.... أتلقى الرد التالي.

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

: false ، "resizable": false ، "مغلق": خطأ ، "العرض": "300px" ، "الارتفاع": null ، "expressedheight": 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.أشبه خطأ في رأيي.

إليك ما جاء في منتدى صفحة الدعم الخاصة بهم: تم استنساخ Docks غير الراسية بالإضافة إلى بدائية JSON غير صالحة

التحكم في Raddock ليس عنصر تحكم قياسي وهناك بعض القيود عند تحديثه عبر Ajax.إذا كنت ترغب في تحديث Raddock عبر Ajax ، فيجب عليك تحديث جميع Raddockones ويجب أن يتم شحن جميع الصخور.

الخطأ الذي تواجهه يرجع إلى أنك تقوم بتحديث راددود عائم مع AJAX.عند سحب الرصيف ، تقوم بنقلها خارج لوحة التحديث وهذا يتسبب في عدم عمل Ajax بشكل صحيح لأنه يحاول إعادة إنشاء قفص الاتهام في المكان الذي كان موجودًا سابقًا.وبهذه الطريقة ، تظهر أرصفة مع نفس المعرف على الصفحة وهذا يؤدي إلى استثناء.هذه مشكلة شائعة لجميع عناصر التحكم التي يمكن نقلها في 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>

نصائح أخرى

ولدي RadDocks زوجين العائمة داخل RadDockLayout. يعمل اياكس إذا يمكنني تحديث RadDock، وRadDockLayout، أو لوحة رئيسية التي يلتف RadDockLayout خلال الكائن RadAjaxManager.

مثال:

<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
    <UpdatedControls>
        <telerik:AjaxUpdatedControl ControlID="mainPanel" />
    </UpdatedControls>
</telerik:AjaxSetting>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top