BAse de données et datagridview

Signaler
Messages postés
448
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
26 juillet 2012
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
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...
A voir également:

4 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
34
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#]
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
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 );
Messages postés
448
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
26 juillet 2012
1
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
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#