2009-03-24 5 views
1

DataTable.RowsプロパティはViewStateに保存されませんが、Columnsプロパティは、ポストバックとデータの間に列が残っている理由を説明できないためです。 アイデアDataTableとViewstate

答えて

4

DataTableクラスは、ViewStateに何も格納しません。 DataTableクラスはWebアプリケーションに固有ではなく、Web固有の機能は使用しません。

DataStableのデータがViewStateに格納されている場合は、ViewStateに情報を格納しているWebコントロール(DataGridなど)のデータソースとして使用しているためです。コントロールは、ポストバックのコントロールを再作成する必要があるDataTableから情報をコピーします。コントロールをデータバインドするために使用されたDataTableオブジェクトは、ページがブラウザに送信されると、もはや存在しません。

DataGridコントロールのColumnsプロパティは、DataGridColumnオブジェクトのコレクションであり、DataColumnオブジェクトのコレクションであるDataTableクラスのColumnsプロパティと同じではありません。は、DataGridがデータバインドされている場合、DataTableの列にコピーされます。

+0

私が見ていることは、あなたが言っていることと完全に矛盾しています。グリッドビューについては言及していないことに注意してください(グリッドビューはViewStateに格納されます)。私が見ているのは、DataTableのColumnsプロパティも同様に格納されるということです。私はもう少しテストをしなければならないだろうと思う。 – sarsnake

+0

私の悪い、あなたは正しいです。以前は列を追加していて気付かなかった。 – sarsnake