Domanda

Sto provando ad aggiornare RadDock (aprendolo / chiudendolo) mettendolo in UpdatePanel ma senza fortuna .... Sto ottenendo la seguente risposta.

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

: false, " ridimensionabile ": false, " chiusa ": false, " Larghezza ": " 300px ", " altezza ": null, " ExpandedHeight ": 0, " Indice ": - 1} . |

Ecco il codice:

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

Codice dietro:

    protected void lbtnUpdate_Click(object sender, EventArgs e)
{

    if (this.RadDock1.Closed)
        this.RadDock1.Closed = false;
    else
        this.RadDock1.Closed = true;
}

Cosa sto facendo di sbagliato qui?

È stato utile?

Soluzione

AGGIORNAMENTO: non stai facendo nulla di sbagliato nel tuo codice. Sono stato in grado di duplicare questo problema utilizzando sia UpdatePanel che RadAjaxManager. Secondo il supporto di Telerik, questa è una "limitazione" nel controllo RadDock. Più come un bug secondo me.

Ecco cosa dice nel forum della pagina di supporto: Docks non ancorati clonati più primitiva JSON non valida

  

Il controllo RadDock non è uno standard   controllo e ci sono alcune limitazioni   quando viene aggiornato tramite Ajax. Se tu   vuoi aggiornare un RadDock tramite Ajax   dovrebbe aggiornare tutte le RadDockZones e tutte   RadDocks dovrebbe essere ancorato.

     

L'errore che si verifica è dovuto   che aggiorni un RadDock mobile   con AJAX. Quando trascini il dock tu   spostarlo al di fuori del pannello di aggiornamento e   questo fa sì che AJAX non funzioni correttamente   mentre tenta di ricreare il dock in   il luogo in cui si trovava in precedenza.   In questo modo due dock con lo stesso ID   appare sulla pagina e questo porta a   un'eccezione. Questo è un problema comune   per tutti i controlli che potrebbero essere spostati   nel DOM.

Sono stato in grado di far funzionare il tuo codice avvolgendo RadDock all'interno di RadDockZone e impostando la proprietà DockMode su " Docked " ;. Se, tuttavia, trascino il dock fuori dalla zona, lo lascio mobile e faccio clic su " Aggiorna " pulsante, ricompare l'errore.

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

Altri suggerimenti

Ho un paio di RadDock galleggianti all'interno di un RadDockLayout. Ajax funziona se aggiorno RadDock, RadDockLayout o il pannello principale che avvolge RadDockLayout tramite l'oggetto RadAjaxManager.

Esempio:

<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
    <UpdatedControls>
        <telerik:AjaxUpdatedControl ControlID="mainPanel" />
    </UpdatedControls>
</telerik:AjaxSetting>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top