Datagrid

cs_Solution Messages postés 92 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 7 août 2006 - 28 sept. 2005 à 09:49
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 - 28 sept. 2005 à 10:40
Bonjour,
je vais remplir datagrid en utilisant OdbcDataReader rdr = myCMD.ExecuteReader();
cad while(rdr.read())
{
Datagrid....
}

1 réponse

cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
28 sept. 2005 à 10:40
Salut,



Voici un exemple complet pour SQL Server.



//Attention à la chaine de connection
SqlConnection sctTest = new SqlConnection("MaChaineDeConnection");
SqlCommand scdTest = new SqlCommand("Select * from MaTable", sctTest);
DataSet dstTest = new DataSet();
sctTest.Open();
SqlDataReader monDataReader = scdTest.ExecuteReader(CommandBehavior.CloseConnection);
do
{
//Lecture de la structure de la table résultat
//Pour plus d'information, regarder l'aide sur IDataReader.GetSchemaTable()
DataTable schemaTable = monDataReader.GetSchemaTable();
//Creation d'une table
DataTable dataTable = new DataTable();
if ( schemaTable != null )
{
//Le schéma est non vide donc il y a des colonnes résultats
for ( int i = 0; i < schemaTable.Rows.Count; i )
{
DataRow dataRow = schemaTable.Rows[i];
//Création d'une colonne unique dans la DataTable
string strNomColonne = ( string )dataRow["ColumnName"];
//Ajoute la colonne à la table, avec le bon type

DataColumn dclColonne = new DataColumn(strNomColonne,
(Type)dataRow["DataType"]);
//Accepte NULL
dclColonne.AllowDBNull = (bool)dataRow["AllowDBNull"];
//Lecture seule
dclColonne.ReadOnly = (bool)dataRow["IsReadOnly"];
//Il y a d'autres propriétés disponibles
dataTable.Columns.Add(dclColonne);
}
//Ajout de la table au dataSet
dstTest.Tables.Add(dataTable);
//Une ligne vide d'objets pour contenir chaque enregistrement
object[] ValeursLigne = new object[monDataReader.FieldCount];
//Remplissage de la table
while (monDataReader.Read())
{
//Affectation direct d'un tableau d'objets
monDataReader.GetValues(ValeursLigne);
dataTable.Rows.Add(ValeursLigne);
/*
//Afectation valeur par valeur dans une ligne
//qui respecte le schéma de la table
DataRow dtrLigne = dataTable.NewRow();
for ( int i = 0; i < monDataReader.FieldCount; i )

dtrLigne[ i ] = monDataReader.GetValue(i);
dataTable.Rows.Add(dtrLigne);
*/
}
}
else
{
//Pas de schéma
DataColumn dclColonne = new DataColumn("NbEnreg");
dataTable.Columns.Add(dclColonne);
dstTest.Tables.Add(dataTable);
DataRow dataRow = dataTable.NewRow();
//Insert le nombre d'enregistrement affectés
dataRow[0] = monDataReader.RecordsAffected;
dataTable.Rows.Add(dataRow);
}
}
//Dans le cas d'une multi-requête, on charge la table suivante
while (monDataReader.NextResult());

Chris

N'oubliez pas de cloturer votre post.
0
Rejoignez-nous