BAse de données et datagridview

cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 25 juil. 2006 à 07:21
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 26 juil. 2006 à 15:55
Bonjour,
j'aimerais savoifr comment remplir un datagridview le plus rapidement possible est-il plus rapide de remplir a partir d'un execute reader ou d'un datadapter ou autre?
POur l'instant je rempli mes datagrdiview a l'aide d'une boucle (while datareader.read()) Mais je me demande si c la meilleur solution. J'aimerais potimiser ua maximum afin d'avoir un bon "rendement" lorsque la BD est importante.
Dans le cas ou on lie la table a un datasource, J'aimerais savoir comment cela se pase pour "customiser" les colonnes (si je veux pouvoir changer leur nom , leur taille, visibilité, etc...).Aussi quand on lie le datagridview a une source de données (table d'une BD=datase)
Comment choisit-on le critere sur lequel on tri e cette table?

Il y a aussi VIRTUAL MODE , je ne comprends pas q quoi cela sert et comment s'en servir.

De meme ds le senss inverse. Comment faire pour mettre les données d'un datagridview ds la bd (pour l'instant je poarcours chaque ligne du datagridview  que j'insere dans une BD pluiseurs tables des fois pour un seul datagridview). Il y a le cas ou le datagridview représente un tableau qu'on remplit "a la main" (dans ce cas je pense que cette methode est bonne puisqu'il ne s'agit que d'inseertion).
Et il y a le cas ou le datagridview représente une part des données d'une table aussi (a ce moment il y a plusieurs sortes d'operations : update,insert,delete et la je ne sais pas comment faire).

Merci bien pour toutes reponse ou indication qui pourrait m'aider a comprendre a a manipuler correctement ces datgridview qui m'ont l'air bien pratiques...

4 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 juil. 2006 à 10:46
le plus rapide, c'est de passer par un DataAdapter... tu peux aussi activer le mode virtuel... l'intérêts c'est qu'il ne récupère que les lignes qu'il affiche.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
25 juil. 2006 à 10:52
Salut,

Je te fais un copier/coller d'un exemple que j'avais déja donné avec un DataGrid pour le remplir, customiser ses colonnes et filtrer les lignes, ça doit pas être bien différent avec le DataGridView.. ( ?? )



string cnxString @"Data Source localhost\SQLEXPRESS;
Initial Catalog = Northwind;
Integrated Security = true;";


string cmdString = @"SELECT * FROM dbo.Products";


DataSet ds;


using ( SqlConnection cnx = new SqlConnection( cnxString ) )
{
    cnx.Open( );


    SqlDataAdapter da = new SqlDataAdapter( cmdString, cnx );


    ds = new DataSet( "Northwind" );
    da.Fill( ds, "Products" ); // Donne un nom à la table créée.
}


//  Afficher uniquement 2 colones.


DataGridTextBoxColumn columnProductName = new DataGridTextBoxColumn( );
columnProductName.MappingName = "ProductName"; // Nom de la colonne.
columnProductName.HeaderText = "Nom du Produit";


DataGridTextBoxColumn columnUnitPrice = new DataGridTextBoxColumn( );
columnUnitPrice.MappingName = "UnitPrice"; // Nom de la colonne.
columnUnitPrice.HeaderText = "Prix à l'unité";


DataGridTableStyle style = new DataGridTableStyle( );
style.MappingName = "Products"; // Nom de la table.
style.GridColumnStyles.AddRange
(
    new DataGridColumnStyle[ ]
    {
        columnProductName,
        columnUnitPrice
    }
);


// Afficher uniquement certaines lignes


DataView dv = new DataView( ds.Tables[ "Products" ] ); // Nom de la table.
dv.RowFilter = "ProductName='Chai'OR ProductName='Ikura'"; // comme un WHERE.


DataGrid dg = new DataGrid( );
dg.DataSource = dv;
dg.TableStyles.Add( style );
dg.Dock = DockStyle.Fill;


this.Controls.Add( dg );
0
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
26 juil. 2006 à 15:47
merci pour l'exemple,
datagridview ne connait pas tablestyle,
je n'ai pas reussi a choisir les colonnes que je veux afficher .
Par contre il m'avait sembler avoir lu que sqlreader etait plus rapide que sqladataadapter.
Que ct fait expres poiur lire les données et donc plus rapide (si je n'ai que de la lecture a faire)
vrai , faux?
j'y comprends plus grand chose la
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 juil. 2006 à 15:55
En effet, il n'y a pas de TableStyle avec le DataGridView
Pour cacher une colonne, tu peux simplement mettre sa propriété Visible a false;

Mx
MVP C# 
0
Rejoignez-nous