Modal Panel wird nicht angezeigt, wenn es in der Zelle einer Grid-Ansicht durch den Button aufgerufen wird

8

Ich habe viel damit zu tun gehabt, wie man ein modales Panel beim Klicken auf eine Schaltfläche innerhalb einer Rasteransicht zeigt.

Zum Kontext: Ich habe eine Datenzeile mit einem Zeichenfolgenfeld, das einen einfachen Text oder ein Base-64-kodiertes Bild enthalten kann. Daher verwende ich eine benutzerdefinierte Vorlage, um zu definieren, wann der rohe Inhalt oder eine Schaltfläche "Bild anzeigen" angezeigt wird ". Dieses Bild wird auf einem modalen Panel geöffnet, das beim Klicken auf die Schaltfläche aufsteigen sollte.

Dies ist das Panel, das ich als Steuerelement erstellt habe (ascx):

%Vor%

Und das ist die Seite und ASPxGridView, wo ich es verwenden möchte:

%Vor%

Codebihind:

%Vor%

Die Erstellung der ButtonColumn-Vorlage:

%Vor%

Der Aufruf der Methode beim Klicken auf btnShowImage funktioniert einwandfrei. Aber wenn ich denselben Aufruf mit einem ImageButton (oder Button) innerhalb der Gridview mache, funktioniert es nicht. Beide Aufrufe erreichen die ShowImage-Methode.

Jede Hilfe wäre willkommen. Danke euch allen.

EDIT 1: Die GridView ist in GridViewWrapper eingekapselt (dort baue ich die Spalten dynamisch mit einer Kombination von Klasseneigenschaften, die durch Reflektion und gespeicherte Metadaten erhalten wurden), diese Klasse hat zu viel Code, um hier zu teilen und ich glaube nicht, dass es der Grund ist. Außerdem habe ich im Debug-Modus ausgeführt und Schritt für Schritt alle relevanten Methoden in diesem durchlaufen.

Die Spalte add Methode:

%Vor%

Ich habe sichergestellt, dass die ShowImage -Methode hitten ist, aber sie verhält sich wie die UpdatePanel1 wurde nicht aktualisiert

    
Diego Rafael Souza 18.01.2018, 19:03
quelle

2 Antworten

6

Das ASPxGridView speichert Informationen zu Spalten in ViewState, speichert jedoch keine Informationen zu Spaltenvorlagen . Dies wird absichtlich gemacht, da Vorlagen sehr komplex sein können und ihre Serialisierung ViewState sehr groß macht. Wenn Sie also zur Laufzeit Spalten mit Vorlagen erstellen, deaktivieren Sie ViewState:

%Vor%

und Spalten bei jedem Callback erstellen:

%Vor%     
Vladimir 24.01.2018, 08:00
quelle
1

Sie haben den folgenden Code verwendet:

%Vor%

Laut diesem Artikel , in asp:AsyncPostBackTrigger Wenn die Eigenschaft EventName nicht angegeben ist, wird das Attribut DefaultEventAttribute des Steuerelements verwendet, um das Standardereignis zu bestimmen. Das Standardereignis für das Steuerelement Button ist beispielsweise das Ereignis Click .

mainGrid control erstellt von GridViewWrapper , dass es nicht mit Steuerelementen verbunden ist, die sich in mainGrid befinden. Updatepanel versucht, async trigger für das Steuerelement mainGrid zu registrieren, das sich außerhalb des Bereichs befindet, es aber nicht kann.

Lösung: Ich denke, Lösung dieses Problems ist update Updatepanel in ShowImage() Methode.

    
Ali Soltani 22.01.2018 13:19
quelle

Tags und Links