2013-01-10 5 views
0

J'utilise asp.net et j'ai le contrôle gridview dans la page ASPX. ce gridview n'a pas vide.lier DataSource gridview + datatable à gridview

J'ai le nom de la table dans la page et je veux lier la table à la grille. donc:

gvName.DataSource = dtName; 
gvName.DataBind(); 

Mais avec ce code, Perdu les données précédentes dans gridview. Je suis allé lier gvName.DataSource + dtName à gvName.

+0

Vous avez une source de données à deux et vous souhaitez les combiner, après que vous voulez définir comme source de données à 'gvName' non? –

+0

J'ai gvName (gridview), ce n'est pas vide, donc j'ai combiner gvName et dtName (datatable) et lier ceci à gvName. –

+0

Quelle est votre source de données par défaut gvName? –

Répondre

0

Vous devez combiner les lignes des deux tables de données (la source d'origine et la nouvelle table de données), puis redéfinir la nouvelle table de données contenant toutes les lignes.

En pseudo code:

DataTable t = GetInitialDataSource(); 
foreach(var item in newDataTable.Rows) 
{ 
    t.ImportRow(item); 
} 

gv.DataSource=t; 
gv.DataBind(); 
+0

je veux combiner la source de données et datatable pas deux datatable. –

+0

Si ce n'est pas de type DataTable, comment voulez-vous le combiner s'il est différent? Si elles sont différentes, vous devez créer un objet entièrement nouveau avec les champs communs et, de nouveau, relier les données. Vous ne pouvez pas appeler gv.DataSource après une publication, car elle sera NULL. – Icarus

+0

puis-je insérer à dtName.Rows avec gvName.Rows ...? Aidez-moi, s'il vous plaît. Je ne veux pas perdu les données précédentes dans gridview. –

0

Essayez ce code. DataTable.Merge peut être utilisé pour combiner les datatables.

dtName.Merge((DataTable)gvName.DataSource); 
    gvName.DataSource = dtName; 
    gvName.DataBind(); 
+0

ce n'est pas correct. gvName.DataSource est null après une page de publication. –