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
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%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.
Tags und Links c# asp.net webforms aspxgridview