dynamische Spalten verschwinden nach dem Postback

8

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 :

%Vor%

In meinem Button-Click-Event versuche ich, den Benutzer zu steuern:

%Vor%

aber ich bekomme den Fehler, dass es nicht existiert.

    
user874854 05.10.2011, 07:31
quelle

2 Antworten

8

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

    
Tim Schmelter 05.10.2011, 07:39
quelle
0

Ich hatte verwendet:

%Vor%

in den GridView -Attributen. Das Entfernen löste mein Problem!

    
SRK 19.01.2014 12:05
quelle