Naviguer dans un DataGridView

Signaler
Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
-
Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
-
Bonjour à tous,
voilà j'ai un petit soucis. J'écris une application dans laquelle j'ai ces codes:

01 Affichage dans les textbox

private void AfficherEleves()
{
try
{
this.txtCodeEleve.DataBindings.Add("Text", DtSetEleve.Tables[0], "code_eleve");
this.txtNomEleve.DataBindings.Add("Text", DtSetEleve.Tables[0], "nom_eleve");
this.txtPrenomEleve.DataBindings.Add("Text", DtSetEleve.Tables[0], "prenom_eleve");
this.txtDateNaissance.DataBindings.Add("Text", DtSetEleve.Tables[0], "date_naissance_eleve");
this.txtLieuNaissance.DataBindings.Add("Text", DtSetEleve.Tables[0], "lieu");
this.txtSexes.DataBindings.Add("Text", DtSetEleve.Tables[0], "sexe_eleve");
this.txtTuteur.DataBindings.Add("Text", DtSetEleve.Tables[0], "tuteur_legal");
this.txtTelephone.DataBindings.Add("Text", DtSetEleve.Tables[0], "tel_tuteur");
this.txtIdEleve.DataBindings.Add("Text", DtSetEleve.Tables[0], "id_eleve");
Courant = (CurrencyManager)this.BindingContext[DtSetEleve.Tables[0]];

string Etat = this.txtSexes.Text.ToString();
if (Etat != "M")
{
// Gestion du genre des Eleve
this.lblDateNaissance.Text = "Née le";
this.lblDateNaissance.Location = new System.Drawing.Point(31, 108);
this.gbxEleve.Tag = DtSetEleve.Tables[0].Rows[i - 1][17].ToString();
this.gbxEleve.Text = string.Concat("Elève n°", gbxEleve.Tag);
}
else
{
// Gestion du genre des Eleve
this.lblDateNaissance.Text = "Né le";
this.lblDateNaissance.Location = new System.Drawing.Point(39, 108);
this.gbxEleve.Tag = DtSetEleve.Tables[0].Rows[i - 1][17].ToString();
this.gbxEleve.Text = string.Concat("Elève n°", gbxEleve.Tag);
}

}
catch //(FileNotFoundException ex)
{
//MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
//this.lblPositionEleve.Text = "0/0";
}
}


02 Un click dans le DataGridView

private void dgvEleves_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
this.txtCodeEleve.Text = this.dgvEleves.CurrentRow.Cells[0].Value.ToString();
this.txtNomEleve.Text = this.dgvEleves.CurrentRow.Cells[1].Value.ToString();
this.txtPrenomEleve.Text = this.dgvEleves.CurrentRow.Cells[2].Value.ToString();
this.txtDateNaissance.Text = this.dgvEleves.CurrentRow.Cells[3].Value.ToString();
this.txtLieuNaissance.Text = this.dgvEleves.CurrentRow.Cells[4].Value.ToString();
this.txtSexes.Text = this.dgvEleves.CurrentRow.Cells[5].Value.ToString();
this.txtTuteur.Text = this.dgvEleves.CurrentRow.Cells[6].Value.ToString();
this.txtTelephone.Text = this.dgvEleves.CurrentRow.Cells[7].Value.ToString();
this.txtIdEleve.Text = this.dgvEleves.CurrentRow.Cells[17].Value.ToString();
}

private void dgvEleves_CellClick(object sender, DataGridViewCellEventArgs e)
{
this.txtCodeEleve.Text = this.dgvEleves.CurrentRow.Cells[0].Value.ToString();
this.txtNomEleve.Text = this.dgvEleves.CurrentRow.Cells[1].Value.ToString();
this.txtPrenomEleve.Text = this.dgvEleves.CurrentRow.Cells[2].Value.ToString();
this.txtDateNaissance.Text = this.dgvEleves.CurrentRow.Cells[3].Value.ToString();
this.txtLieuNaissance.Text = this.dgvEleves.CurrentRow.Cells[4].Value.ToString();
this.txtSexes.Text = this.dgvEleves.CurrentRow.Cells[5].Value.ToString();
this.txtTuteur.Text = this.dgvEleves.CurrentRow.Cells[6].Value.ToString();
this.txtTelephone.Text = this.dgvEleves.CurrentRow.Cells[7].Value.ToString();
this.txtIdEleve.Text = this.dgvEleves.CurrentRow.Cells[17].Value.ToString();
//Courant.Position.ToString() = this.dgvEleves.CurrentCellAddress();
}


03 Un des boutons de navigation.

private void Click_Precedent(object sender, EventArgs e)
{
try
{
if (Courant.Position > 0)//(j > 1)
{
//Passage à l'Enseignant précédant
//j--;
Courant.Position--;
//Label_Effectif_Eleves();
this.lblPositionEleve.Text = ((Courant.Position + 1).ToString()) + "/" + Courant.Count.ToString(); // +"/" + (Courant.Count).ToString();
AfficherEleves();
}
else
{
MessageBox.Show("Vous êtes en début de Liste", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch //(FileNotFoundException ex)//(Exception ex)
{
//MessageBox.Show(string.Concat("Erreur: ", ex.Message));
}
}

J'aurais souhaité, lors du click sur un des bouton de navigation, pouvoir faire avancer le curseur de navigation du DataGridView.

D'autre part, est-il possible par code ou par d'autres moyens d'ajouter une colonne au DataGridView qui fasse le compte des lignes de façon automatique.
Merci à tous.

8 réponses

Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
1
Bonjour Whismeril et merci pour ta réponse.
En effet j'ai ajouté 4 bouton de navigation qui
btnPremier
btnPrecedent
btnSuivant
btnDernier

me permettant de me déplacer dans les enregistrements tout les affichant dans les différents TextBox; ce que je souhaiterais, c'est de pouvoir mettre le curseur du DataGridView sur la ligne correspondant lorsque l'un des boutons de navigation est actionné.
Si je suis au premier enregistrement, que la première ligne du DataGridView soit sélectionnée et si je click sur le btnDernier, et que mes textbox affichent le dernier enregistrement, que la dernière ligne du DataGrideView soit sélectionnée également. Merci pour tout.
D'autre part, est-il possible d'ajouter une colonne indépendante qui décompte les enregistrements.
J'ai utilisé les balises pour poser mes questions.
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
444
Bonjour,

pour poster ton code merci d'utiliser les balises de code (3ième icône en partant de la droite : ).

Ton utilisation du binding n'exploite pas la puissance de ce principe et te force à coder l'affichage des données dans les textbox, alors que bien employé c'est automatique. Voici ma contribution sur le sujet cela peut t'aider.

Qu'entends tu par
Un des boutons de navigation
?

Les flèches déplacent le focus des cellule au sein du tableau, que peuvent donc être les touches de navigation?

Whismeril
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
444
Bonjour,

J'ai utilisé les balises pour poser mes questions.

non tu as utiliser la balise de citation comme moi au dessus.
La balise de code ça donne ça:
string toto = "toto";
int tutu = 1;


Pour tes boutons je regarde et reposte cet après midi.

Whismeril
Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
1
Merci de m'avoir éclairé, j'étais donc dans la confusion par ignorance. Merci d'avoir mis en lumière ma lanterne.
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
444
Bonsoir,

pour activer une cellule le code est:
dataGridView2.CurrentCell= dataGridView2[1,1];



Whismeril
Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
1
Merci pour tout, je vais essayer votre code. Mais dites moi et en ce qui concerne la possibilité de savoir s'il est possible de déterminer une colonne pour faire le décompte das enregistrements indépendamment de la source du DataGridView? Merci bonne journée.
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
444
Bonjour, par
faire le décompte das enregistrements

je comprends que tu veux faire la somme des enregistrements d'une même ligne.
Il y a déjà eu plusieurs discussions sur le sujet.

Ce que je ferais à ta place, serait de créer une classe représentant la table que tu importes, avec une propriété supplémentaire retournant la somme que tu souhaite.
Je chargerais la table dans une List<T> de cette classe et binderais cette liste avec la méthode décrite dans le lien que je t'ai donné plus haut.

@+

Whismeril
Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
1
Merci pour tout. Bonne journée