2010-11-04 18 views
3

DataGridView lié par ce code ne portant pas l'comme prévu:Reliure DataGridView à un DataSet échoue directement

dataGridView1.DataSource = ds; 

est ici le code pour ds:

public DataSet ConnectandReadList() 
     { 
      DataSet ds = new DataSet(); 

      string connection_string="Data Source=hermes;database=qcvalues; Integrated Security=SSPI;";    

      using (var myConnection = new SqlConnection(connection_string)) 
      { 

       myConnection.Open(); 
       var command = new SqlCommand(InitializeQuery(), myConnection); 
       var adapter = new SqlDataAdapter(command); 

       adapter.Fill(ds); 
      } 


      return ds; 
     } 
+1

Un DataSet est une collection de DataTables. Vous devez spécifier un DataTable pour être lié à DataGridView. Sinon, il ne sait pas quel DataTable utiliser, même s'il n'y en a qu'un seul. – DOK

Répondre

4

Essayez de se lier à la table à l'intérieur l'ensemble de données: dataGridView1.DataSource = ds.Tables[0];

De la documentation de la propriété DataGridView.DataSource, vous pouvez également lier à un DataSet et utiliser le DataMember propriété:

Lors de la liaison à une source de données qui contient plusieurs listes ou tables, vous devez définir la propriété DataMember à une chaîne qui spécifie la liste ou d'une table pour se lier à.

Je pense que dans ce cas, le nom de la table serait "Table" puisque vous ne le nommez pas explicitement.

+0

HELL YEAH !!!!!!!!!!!!!!!!!!!!!!!!!!!!. Pouvez-vous s'il vous plaît expliquer pourquoi je devais faire cela? –

+0

@adrift u da man –

+0

Pas exactement sûr, sinon que je ne pense pas que le datagridview soit assez intelligent pour regarder dans l'ensemble de données pour ses tables. Je n'ai jamais pensé à approfondir la question ... –

3

Est-ce que ds est un DataSet? Si tel est le cas, essayez de définir DataMember de votre DGV sur un DataTable dans le DataSet ou en spécifiant DataTable de votre DataSet pour DataSource.