Ich habe eine GridView
mit einigen BoundFields
und zwei TemplateFields
. In diesen beiden TemplateFields
erstelle ich dynamisch UserControls
mit einem DropDownList
und einem TextBox
, die Benutzer ändern können.
Wenn ich versuche, die Werte der Steuerelemente nach einem PostBack
zu erhalten, sind die Werte in BoundFields
immer noch vorhanden, aber meine dynamischen Steuerelemente verschwinden. Ich kann sie wieder erstellen, aber es wird nicht die Werte des Benutzers erhalten ... Wie kann ich diese Werte erhalten, bevor sie verloren gehen?
Hier ist ein Teil meines Codes:
Im Ereignis RowDataBound
:
In meinem Button-Click-Event versuche ich, den Benutzer zu steuern:
%Vor%aber ich bekomme den Fehler, dass es nicht existiert.
Sie sollten dynamische Steuerelemente in RowCreated erstellen anstelle von RowDataBound , da dieses Ereignis bei jedem Ereignis ausgelöst wird Postback, wobei RowDataBound
nur ausgelöst wird, wenn GridView
mit seiner DataSource
verknüpft wird.
Dynamisch erstellte Steuerelemente müssen für jedes Postback mit der gleichen ID wie zuvor neu erstellt werden. Dann behalten sie ihre Werte in der ViewState und Ereignisse werden korrekt ausgelöst (zB das SelectedIndexChanged
-Ereignis einer DropDownList).
Also sollten Sie sie in RowCreated
erstellen und sie in RowDataBound
füllen (z. B. die DropDownList
Datenquelle / Elemente oder TextBox
-Text).