C# - Limitation du nombre d'enregistrements dans un datagrid

Michel0911 Messages postés 17 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 3 février 2004 - 28 nov. 2003 à 10:35
Michel0911 Messages postés 17 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 3 février 2004 - 5 déc. 2003 à 19:17
Bonjour,

Comment faire pour limiter le nombre d'enregistrements à l'affichage dans un datagrid ?

Par exemple, mon critère de selection dans un form de recherche est trop vague. La requête me renvoie 100 records. Je veux que si le nombre de records dépasse 50 une message box s'affiche pour demander la modification du critère de recherche.

Merci d'avance

Michel

10 réponses

gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
28 nov. 2003 à 12:35
Quelle est ta procédure pour l'affichage (ou liaison) des données dans ton DataGrid ?

[Membre du laboratoire .NET de SUPINFO]
0
Michel0911 Messages postés 17 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 3 février 2004
28 nov. 2003 à 12:52
if (textBoxRecNom.Text != "")
{
dataSetRec.Clear();
oleDbDataAdapter2.SelectCommand.CommandText= "SELECT NomFamille, Prénom, Poste,RéfEmployé, TélProfessionnel, Titre FROM Employés WHERE NomFamille like '" + textBoxRecNom.Text + "%'";

oleDbDataAdapter2.Fill(dataSetRec);
}

Michel
0
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
28 nov. 2003 à 19:29
ben pour afficher juste les 10 premiers par exemple, dans ton ordre SQL tu rajoute :

LIMIT 0, 10


[Membre du laboratoire .NET de SUPINFO]
0
Michel0911 Messages postés 17 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 3 février 2004
1 déc. 2003 à 15:11
En fait, je ne cherche pas à limiter ma requête aux 10 premier records. Mais si le résultat de ma requête dépasse , par exemple, 100 records, j'aimerais afficher un messageBox " Trop de d'enregistrement. Affiner votre sélection". Je ne sais pas comment récupérer le nombre d'enregistrement pour pouvoir afficher le message et ne pas déclencher l'action Fill.

J'espère que c'est assez clair ...

Merci
Michel
0

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

Posez votre question
stegars Messages postés 24 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 25 février 2004 2
4 déc. 2003 à 15:52
Avant d'affecter ton Dataset a ton datagrid, tu peux verifier le nombre d'enregistrement par
if (dataSetRec.tables[0].Rows.Count > 100)
    MessageBox.Show("blablabla");


Stegars
0
Michel0911 Messages postés 17 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 3 février 2004
4 déc. 2003 à 19:01
Si j'utilise ton instruction avant d'affecter le datagrid avec l'instruction Fill, le rowcount est à zéro. Sais tu comment faire pour lancer la requête sans affecter le datagrid (Fill) de manière à ce que je puisse utiliser ton instruction après ?

Merci beaucoup

Michel
0
stegars Messages postés 24 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 25 février 2004 2
4 déc. 2003 à 20:05
La méthode Fill(), appartient a un DataAdapter et non au Datagrid et c'est pour remplir ton dataset qui lui remplira to datagrid.

Alors tu utilise la méthode Fill() pour remplir ton dataset et comme tu est déconnecter de la database, ton resultset est en mémoire et le count est disponible.

pour remplir ton datagrid par la suite tu utilise:
datagrid.DataSource = dataSetRec.tables[0].DefaultView
(Virifie la syntax exact...)

j'espère que le tout sera t'aider.

Stegars
0
Michel0911 Messages postés 17 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 3 février 2004
5 déc. 2003 à 11:47
Désolé mais je n'ai pas compris ton explication. Voilà ce que je fais:

if (textBoxRecNom.Text != "")

{

dataSetRec.Clear();
oleDbDataAdapter2.SelectCommand.CommandText = "SELECT NomFamille, Prénom, Poste,RéfEmployé, TélProfessionnel, Titre FROM Employés WHERE NomFamille like '" + textBoxRecNom.Text + "%'";

MessageBox.Show("ctl row count: " + dataSetRec.Tables[0].Rows.Count);//row Count = 0

if (dataSetRec.Tables[0].Rows.Count > 2)

{
MessageBox.Show("Stop: ");
}

else

{
oleDbDataAdapter2.Fill(dataSetRec);
}

}

Je n'arrive pas à voir comment insérer ta méthode .

Merci d'avance si tu peux préciseer

Michel
0
stegars Messages postés 24 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 25 février 2004 2
5 déc. 2003 à 13:16
Désolé, je crois que le titre de ce poste protait a confusion!

Selon ce que je vois avec ton code, ce n'est pas un Datagrid que tu veux limiter mais ton Dataset et donc ta requête elle même, étant donné que tu mais la condition avant la methode Fill du DataAdapter.

Dans ce cas je ne vois qu'une autres solution qui est de faire un "select Count(*) FROM Employés WHERE NomFamille like '" + textBoxRecNom.Text + "%'" avant ta vrai requête. Mais cela te force a aller sur la base de donnée deux fois(une pour le count et une autre pour le résultats.).

Dans ce cas, tu peux utilisé une OleDBCommand et le méthode ExecuteScalar qui retrouve la première valeur de la requête.

Stegars
0
Michel0911 Messages postés 17 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 3 février 2004
5 déc. 2003 à 19:17
C'est ce que j'avais essayé de faire : une requête avec un select count(*) pour récupérer le comptage avant de faire la requête select. Mais je ne sais pas(désolé je débute en c#) comment récupérer le résultat cette première requête sans évidemment l'affecter dans le datagrid.

Michel
0
Rejoignez-nous