2010-04-05 5 views
1

Je tente d'utiliser un appel de base de données et de réutiliser ces données pour d'autres contrôles, sans avoir à effectuer d'autre appel. Scénario: J'appelle la table des livres qui renvoie tous les auteurs et titres. Je crée un contrôle de liste d'auteur appelé list1 pour afficher tous les titres de Shakespeare et un list2 pour afficher les titres de Charles Dickens.Réutilisation de la source de données

Void Bindme() 
{ 

string commandText = "Select * from books"; 

     SqlCommand mycommand = new SqlCommand(commandText, datasource1); 
     datasource1.Open(); 
     SqlDataReader myReader1 = mycommand.ExecuteReader(); 


     list1.DataSource = myReader1; 
     list1.DataBind(); 

     list2.DataSource = myReader1; 
     list2.DataBind(); 

     datasource1.Close(); 
} 

Dans mon exemple, seule la première liaison à la source, list1, obtient des données. Des idées?

+0

Earlz

Répondre

1

Vous pouvez le faire comme suit.

 


string commandText = "Select * from books where firstcondition;Select * from books where secondcondition"; 

     SqlCommand mycommand = new SqlCommand(commandText, datasource1); 
     datasource1.Open(); 
     SqlDataReader myReader1 = mycommand.ExecuteReader(); 

list1.DataSource = myReader1; 
list1.DataBind(); 

myReader1.NextResultSet(); 

list2.DataSource = myReader1; 
list2.DataBind(); 

 
+0

Mieux encore, OP utiliserait deux ensembles de données parce qu'il n'a pas besoin de la réutilisation, maintenant qu'il est en fait le filtrage ** sur la base de données ** et non sur son programme. Plus clair à lire, moins déroutant. – ANeves

Questions connexes