2009-03-24 11 views
1

ressemble à la propriété DataTable.Rows n'est pas enregistrée dans ViewState, mais la propriété Colonnes est, car je ne peux pas expliquer pourquoi les colonnes persistent entre les publications et les données non. Des idées?DataTable et Viewstate

Répondre

4

La classe DataTable ne stocke aucun élément dans ViewState. La classe DataTable n'est pas spécifique aux applications Web et n'utilise aucune fonctionnalité Web spécifique.

Si des données d'un objet DataTable sont stockées dans ViewState, c'est parce que vous l'utilisez comme source de données pour un contrôle Web qui stocke des informations dans ViewState, comme par exemple un DataGrid. Le contrôle copie les informations du DataTable dont il a besoin pour recréer le contrôle sur la publication. L'objet DataTable qui a été utilisé pour lier initialement le contrôle n'existe plus une fois que la page est envoyée au navigateur. La propriété Columns du contrôle DataGrid (par exemple) est une collection d'objets DataGridColumn, ce n'est pas la même que la propriété Columns de la classe DataTable qui est une collection d'objets DataColumn, même si la plupart des informations proviennent des colonnes de DataTable est copié dans les colonnes du DataGrid lorsque le DataGrid est lié aux données.

+0

Mais ce que je vois est en contradiction totale avec ce que vous dites. Notez que je ne parle pas de GridView (je suis conscient que gridView est stocké dans ViewState). Ce que je vois, c'est que la propriété Columns de DataTable est également stockée. Je suppose que je vais devoir faire quelques tests de plus. – sarsnake

+0

mon mauvais, vous avez raison. J'ajoutais des colonnes plus tôt et je n'ai pas remarqué. – sarsnake