DataGridView - Limiter le nombre de lignes affichées

Résolu
cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006 - 26 juin 2006 à 14:23
cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006 - 7 juil. 2006 à 16:49
Bonjour,

J'ai un DataSet contenant + de 1000 entrées.
Je le lie à un DataGridView.

J'aimerais effectuer une sorte de pagination du DataGridView.
C'est-a-dire que j'aimerais afficher les entrées par 50 (max)

Comment je peux dire au DataGridView qu'il ne doit pas tout afficher ?
Dois-je créer une autre table dans mon DataSet qui, elle, ne comportera
que 50 entrées ?

J'espère avoir été assez clair !

Merci d'avance

17 réponses

cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006
6 juil. 2006 à 12:04
Ca y est,

je recupere le DefaultView de la DataTable, j'en fais une copie (ne semble pas fonctionner sinon) et je la trie.

Bon, ok, il faut retransformer cette DataView en DataTable mais ca fonctionne.
A part le fait que j'ai réellement l'impression de "bidouiller" pour pouvoir faire une pagination d'une DataTable.

J'espère avoir été assez clair !
Merci encore.
3
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
26 juin 2006 à 15:46
Bonjour,
Je ne sais pas si cette solution est la bonne mais tu peut essayer de mettre en place une boucle qui affiche tes données. et ensuite, dès que tu as atteint la valeur souhaitée tu sort de la boucle et par conséquent, tu arrête l'affichage.
Comme ceci :

int NbrEntrees = a; //Nombre d'entrées que tu souhaite afficher
For(int i=0 ; i<= NbrEntrees ; i++)
{
   /*Ici, tu met ton code pour afficher chaque entrée*/
}

En éspèrant que cela t'aide.

_________________________________________________________________________
Woot
0
cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006
27 juin 2006 à 11:57
Sans vouloir te vexer,

mon problème n'est pas de faire une boucle.
Le truc c'est que tu ne gère pas réellement l'affichage dans un DataGridView.
C'est quand tu le lies que le Framework affiche dedans TOUT le DataSet.
Il n'y a aucun endroit où je gère moi-même l'insertion des lignes dans le DataGridView.

Quelqu'un aurait une solution ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
27 juin 2006 à 12:13
Salut,
Tu peux créer une View (en mettant des filtres) puis afficher cette View...
Ca me semble le plus propre à priori.

VC# forever
=13319
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
27 juin 2006 à 14:00
Salut,
Ok je n'avais pas bien saisie ton problème.

_________________________________________________________________________
Woot
0
cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006
27 juin 2006 à 14:38
Salut Bidou,

Alors je ne sais pas comment créer une View.
Est-ce facile à créer à partir d'une partie de DataSet ?

As-tu déjà utiliser ce genre de chose (pour eviter de chercher pdt des heures) ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
27 juin 2006 à 17:59
Regarde du côté de la classe DataView, si mes souvenirs sont bons, c'est assez simple à utiliser... Je n'ai pas d'exemples directement sous la main, mais dans MSDN tu devrais trouver ton bonheur.

VC# forever
=13319
0
cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006
28 juin 2006 à 10:58
Ok, merci,




je vais regarder de ce coté là et
 aussi sur les 

DataGridViewRowCollection

Je ne valide pas de réponse tant que je n'ai pas réussi.

Merci à vous deux !
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
6 juil. 2006 à 12:32
A mon avis, t'as fait trop compliqué....
Petit exemple fait très rapidement :

DataTable _dt =
new
DataTable();

...
...
this._dt.Columns.Add(
"string",
typeof(
string));

this._dt.Columns.Add(
"int",
typeof(
int));

this._dt.Columns.Add(
"char",
typeof(
char));

this._dt.Rows.Add(
"Test", 1,
'a');

this._dt.Rows.Add(
"Coucou", 2,
'g');

this._dt.Rows.Add(
"CS", 3,
's');

this._dt.Rows.Add(
"C#", 4,
'p');

this._dt.Rows.Add(
"Salut", 5,
'x');

this.dataGridView1.DataSource =
this._dt;
...
...
DataView
dv =
new
DataView(
this._dt);

for (
int i =
this._dt.Rows.Count - 1; i > 2; i--) dv.Delete(i); // Laisse les 3 premières lignes

this.dataGridView1.DataSource = dv;

VC# forever
=13319
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
6 juil. 2006 à 12:39
0
cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006
6 juil. 2006 à 17:30
Non, je peux pas faire ça.

Parce que voilà, j'ai disons par exemple 100 éléments ds mon DataSet.
Je veux pouvoir les trier (les 100) mais les afficher que par 10 par exemple.

Je ne peux pas faire ce que tu me dis si je veux afficher les éléments 50 à 60 par exemple.

En gros, je dois gérer manuellement la pagination et vu que je ne peux pas récupérer les Rows du DataView (trié) directement, je DOIS passer par un DataSet intermédiaire !

Je sais pas si c'est très clair ?!?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
6 juil. 2006 à 18:36
Pas vraiment, ou est le probleme si tu dois afficher les éléments 50 à 60 ?

VC# forever
=13319
0
cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006
7 juil. 2006 à 10:44
Ben, en fait, dans ton exemple, tu supprimes les lignes que tu ne veux pas afficher.

C'est une perte de temps énorme si j'ai 10000 éléments ds ma Datatable et que je veux en afficher que 10.

C'est pour ça que je prends uniquement les éléments voulus dans ma DataView triée et que je les copie manuellement dans une autre DataTable
que je lie au DataGridView.

C'est plus clair maintenant ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 juil. 2006 à 10:54
Euh moui, et avec les filtres offert par le DataView, tu peux rien faire ?
Parce que le delete, c'était juste un exemple...

VC# forever
=13319
0
cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006
7 juil. 2006 à 15:21
Non, je vois rien dans la doc de ces filtres qui pourrait m'aider.
A part le "count" qui pourrait m'aider à exclure ceux que je veux pas afficher.

Mais c'est fou, je dois pas être le seul à vouloir faire de la pagination d'une Datatable sur une DataGridView. C'est à croire qu'ils ne l'ont pas prévu.

Alors que le Framework le fait très facilement en ASP, en C# on doit se débrouiller !
0
cs_brute Messages postés 135 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 11 mai 2007 1
7 juil. 2006 à 16:20
effectivement les datagrid sont mieux gérer en asp.


J'ai eu le meme probleme que toi, que j'ai résolu en gérant moi meme l'affichage.

J'affiche 20 lignes et j'ai fais des boutons suivant précédent dernier premier 10suivant et 10précédent.


quelques liens ^pour t'aider :


http://support.microsoft.com/default.aspx?scid=kb%3Bfr%3B307710

http://faqcsharp.developpez.com/?page=form_dgrid#form_dgrid_select_row


et surtout celui qui ma le plus aidé :

http://support.microsoft.com/default.aspx?scid=kb%3Bfr%3B307710


bonne chance
0
cs_Tinio Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 juillet 2006
7 juil. 2006 à 16:49
Tu as donc fais la pagination "à la main" comme moi.
Merci pour tes liens.

Et surtout Merci encore de ton aide !
0
Rejoignez-nous