DataGridView - Limiter le nombre de lignes affichées [Résolu]

cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention - 26 juin 2006 à 14:23 - Dernière réponse : cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention
- 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
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention - 6 juil. 2006 à 12:04
3
Merci
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.

Merci cs_Tinio 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_Tinio
woot6768 397 Messages postés mercredi 8 mars 2006Date d'inscription 23 mars 2007 Dernière intervention - 26 juin 2006 à 15:46
0
Merci
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
Commenter la réponse de woot6768
cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention - 27 juin 2006 à 11:57
0
Merci
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 ?
Commenter la réponse de cs_Tinio
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 27 juin 2006 à 12:13
0
Merci
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
Commenter la réponse de cs_Bidou
woot6768 397 Messages postés mercredi 8 mars 2006Date d'inscription 23 mars 2007 Dernière intervention - 27 juin 2006 à 14:00
0
Merci
Salut,
Ok je n'avais pas bien saisie ton problème.

_________________________________________________________________________
Woot
Commenter la réponse de woot6768
cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention - 27 juin 2006 à 14:38
0
Merci
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) ?
Commenter la réponse de cs_Tinio
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 27 juin 2006 à 17:59
0
Merci
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
Commenter la réponse de cs_Bidou
cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention - 28 juin 2006 à 10:58
0
Merci
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 !
Commenter la réponse de cs_Tinio
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 6 juil. 2006 à 12:32
0
Merci
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
Commenter la réponse de cs_Bidou
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 6 juil. 2006 à 12:39
Commenter la réponse de cs_Bidou
cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention - 6 juil. 2006 à 17:30
0
Merci
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 ?!?
Commenter la réponse de cs_Tinio
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 6 juil. 2006 à 18:36
0
Merci
Pas vraiment, ou est le probleme si tu dois afficher les éléments 50 à 60 ?

VC# forever
=13319
Commenter la réponse de cs_Bidou
cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention - 7 juil. 2006 à 10:44
0
Merci
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 ?
Commenter la réponse de cs_Tinio
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 7 juil. 2006 à 10:54
0
Merci
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
Commenter la réponse de cs_Bidou
cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention - 7 juil. 2006 à 15:21
0
Merci
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 !
Commenter la réponse de cs_Tinio
cs_brute 135 Messages postés mercredi 8 novembre 2000Date d'inscription 11 mai 2007 Dernière intervention - 7 juil. 2006 à 16:20
0
Merci
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
Commenter la réponse de cs_brute
cs_Tinio 11 Messages postés mercredi 18 février 2004Date d'inscription 7 juillet 2006 Dernière intervention - 7 juil. 2006 à 16:49
0
Merci
Tu as donc fais la pagination "à la main" comme moi.
Merci pour tes liens.

Et surtout Merci encore de ton aide !
Commenter la réponse de cs_Tinio

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.