Naviguer dans un DataGridView

cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 - 28 août 2012 à 10:48
cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 - 30 août 2012 à 12:57
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

cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 1
29 août 2012 à 09:24
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.
1
Whismeril Messages postés 19043 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 mai 2024 656
28 août 2012 à 22:33
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
0
Whismeril Messages postés 19043 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 mai 2024 656
29 août 2012 à 12:03
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
0
cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 1
29 août 2012 à 14:00
Merci de m'avoir éclairé, j'étais donc dans la confusion par ignorance. Merci d'avoir mis en lumière ma lanterne.
0

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

Posez votre question
Whismeril Messages postés 19043 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 mai 2024 656
29 août 2012 à 17:48
Bonsoir,

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



Whismeril
0
cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 1
30 août 2012 à 09:05
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.
0
Whismeril Messages postés 19043 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 mai 2024 656
30 août 2012 à 09:26
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
0
cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 1
30 août 2012 à 12:57
Merci pour tout. Bonne journée
0
Rejoignez-nous