2009-03-24 13 views
1

sieht aus wie DataTable.Rows-Eigenschaft nicht in ViewState gespeichert wird, aber die Columns-Eigenschaft ist, weil ich nicht erklären kann, warum Spalten zwischen Postbacks beibehalten und die Daten nicht. Irgendwelche Ideen?DataTable und Viewstate

Antwort

4

Die DataTable-Klasse speichert in ViewState überhaupt nichts. Die DataTable-Klasse ist nicht für Webanwendungen spezifisch und verwendet keine webspezifischen Funktionen.

Wenn Daten aus einem DataTable-Objekt in ViewState gespeichert werden, liegt dies daran, dass Sie sie als Datenquelle für ein Websteuerelement verwenden, das Informationen in ViewState speichert, wie z. B. ein DataGrid. Das Steuerelement kopiert die Informationen aus der DataTable, die zum erneuten Erstellen des Steuerelements für das Postback erforderlich sind. Das DataTable-Objekt, mit dem das Steuerelement ursprünglich gebunden wurde, ist nicht mehr vorhanden, sobald die Seite an den Browser gesendet wurde. Die Columns-Eigenschaft des DataGrid-Steuerelements (z. B.) ist eine Auflistung von DataGridColumn-Objekten. Sie entspricht nicht der Columns-Eigenschaft der DataTable-Klasse, die eine Auflistung von DataColumn-Objekten darstellt, obwohl die meisten Informationen aus den Spalten stammen der DataTable wird in die Spalten des DataGrid kopiert, wenn das DataGrid Daten gebunden ist.

+0

Aber was ich sehe, widerspricht völlig, was Sie sagen. Beachten Sie, dass ich nicht über GridView spreche (ich bin mir bewusst, dass GridView in ViewState gespeichert wird). Wobei ich sehe, dass die Columns-Eigenschaft von DataTable ebenfalls gespeichert wird. Ich denke, ich werde noch ein paar Tests machen müssen. – sarsnake

+0

mein schlechter, du hast Recht. Ich fügte früher Spalten hinzu und bemerkte es nicht. – sarsnake