private void Article_MoveLigne1(object sender, MoveLigneEventArgs nligne) { //assagne la nouvelle valeur de ligne de sélection Dgv.Rows[nligne.Nligne].Selected = true; //rafraichie la fenêtre listearticle this.Refresh(); counter = nligne.Nligne; //effectue un clic pour déclencher dgv_cellcontentclik Dgv_CellContentClick(sender, e); }
private void MettreAJour(int nligne, int nbart) { //envoie le numéro de ligne à la fenêtre article article.Nligne = nligne; //envoie le nombre de ligne à la fenêtre article article.Nbart = nbart; }
//récupération du numéro d'article dans la ligne sélectionnée en colonne 6 //e.RowIndex est mis à jour lorsque l'on clic sur une ligne pour la sélectionnée //si non e.RowIndex n'est pas mis à jour par le déplacement de la ligne de sélection //pour test if (truc == 0) { //récupération du numéro d'article dans la ligne sélectionnée en colonne 6 Donnee = Dgv.Rows[e.RowIndex].Cells[5].Value.ToString(); } else { //récupération du numéro d'article en fonction du compteur de ligne counter Donnee = Dgv.Rows[counter].Cells[5].Value.ToString(); } //mise en forme de la donnée pour former la commande Donnee = String.Concat(S1, Donnee, S2); //récupération du nombre de lignes d'article affichés Nbart = dgv.Rows.Count; if (truc == 0) { //récupère le numéro de la ligne sélectionnée nligne = dgv.Rows[e.RowIndex].Index; } else { nligne = dgv.Rows[counter].Index; } ++truc; //envoie le nombre de ligne à la fenêtre article MettreAJour(nligne, nbart);
dgv.Rows[e.RowIndex].Indexest idiot, e.RowIndex c'est déjà le numéro de la ligne.
if (truc == 0) { //récupération du numéro d'article dans la ligne sélectionnée en colonne 6 Donnee = Dgv.Rows[e.RowIndex].Cells[5].Value.ToString(); nligne = e.RowIndex; } else { //récupération du numéro d'article en fonction du compteur de ligne counter Donnee = Dgv.Rows[counter].Cells[5].Value.ToString(); nligne = counter; } //mise en forme de la donnée pour former la commande Donnee = String.Concat(S1, Donnee, S2); //récupération du nombre de lignes d'article affichés Nbart = dgv.Rows.Count; }
Donnee = Dgv.Rows[e.RowIndex].Cells[5].Value.ToString();
"En plus, puisque tu n'appliques pas mon conseil de ne pas repasser par Dgv_CellContentClick(), MettreAjour() ne sert à rien, autant mettre son code à la suite dans Dgv_CellContentClick()".
Pouvez-vous m'expliquer plus précisément ce que vous préconisez.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question/// <summary> /// fonction de déplacement de la ligne de sélection dans la datagrille /// </summary> /// <param name="sender"></param> /// <param name="nligne"></param> private void Article_MoveLigne1(object sender, MoveLigneEventArgs nligne) { //assagne la nouvelle valeur de ligne de sélection Dgv.Rows[nligne.Nligne].Selected = true; //mise à jour du compteur deligne counter = nligne.Nligne; //effectue un clic pour déclencher dgv_cellcontentclik Dgv_CellContentClick(sender, e); } /// < summary> /// Fonction de mise à jour de la ligne sélectionnée dans la datagrille /// et envois les valeurs à la fenêtre article /// </summary> /*private void MettreAJour(int nligne, int nbart) { //envoie le numéro de ligne à la fenêtre article article.Nligne = nligne; //envoie le nombre de ligne à la fenêtre article article.Nbart = nbart; }*/ /// <summary> /// bouton retour à la fenêtre principale /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button1_Click_1(object sender, EventArgs e) { //efface le contenue de la datagridview Dgv.Rows.Clear(); //retour à la fenêtre principale du programme this.Visible = false; } /// <summary> /// affichage dans la fenêtre article le détaille de l'article /// après un clic sur la sélection d'une ligne dans la datagridview /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void Dgv_CellContentClick(object sender, DataGridViewCellEventArgs e) { //définition du fournisseur d'acces à la datatbase DbProviderFactory dbpf = DbProviderFactories.GetFactory("System.Data.OleDb"); //définition de l'objet de connexion à la database DbConnection oConn; //création de la connexion à la database oConn = dbpf.CreateConnection(); //définition de la chaine de connexion à la database DbConnectionStringBuilder oCsb = new DbConnectionStringBuilder { { "Provider", "Microsoft.ACE.OLEDB.12.0" }, { "Data Source", "|DataDirectory|\\EITF.accdb" } }; oConn.ConnectionString = oCsb.ConnectionString; //ouvre la connexion oConn.Open(); //définition de création de commande pour exécuter une commande pour acceder à la database DbCommand oCmd = oConn.CreateCommand(); //commande de select count pour connaitre le nombre d'enregistrement oCmd.CommandText = "SELECT COUNT(*) FROM ELEKTOR"; //récupération dans la variable totart le nombre d'enregistrement dans la table ELEKTOR Totart = (int)oCmd.ExecuteScalar(); //ajoute =' avant la valeur entrée du numéro d'article. pour former la commande S1 = "='"; //ajoute ' aprés la valeur entrée du numéro d'article. pour former la commande S2 = "'"; //récupération du numéro d'article dans la ligne sélectionnée en colonne 6 //e.RowIndex est mis à jour lorsque l'on clic sur une ligne pour la sélectionnée //si non e.RowIndex n'est pas mis à jour par le déplacement de la ligne de sélection //pour test if (truc == 0) { //récupération du numéro d'article dans la ligne sélectionnée en colonne 6 Donnee = Dgv.Rows[e.RowIndex].Cells[5].Value.ToString(); nligne = e.RowIndex; } else { //récupération du numéro d'article en fonction du compteur de ligne counter Donnee = Dgv.Rows[counter].Cells[5].Value.ToString(); nligne = counter; } //mise en forme de la donnée pour former la commande Donnee = String.Concat(S1, Donnee, S2); //récupération du nombre de lignes d'article affichés Nbart = dgv.Rows.Count; //incrémentation de la variable truc ++truc; //envoie le nombre de ligne à la fenêtre article //MettreAJour(nligne, nbart); /****************************************************************************************/ /* recherche dans la table elektor tous les enregistrments sélection sur numéro article. */ /****************************************************************************************/ //recherche ne nombre d'article. correspondant au numéro d'article. //définition de la commande select de lecture de la table elektor pour une recherche sur le numéro d'un article. oCmd.CommandText = "SELECT * FROM ELEKTOR WHERE ART_NR" + Donnee; // accès aux données de la table ELEKTOR DbDataReader oRdr; //exécition de la commande oRdr = oCmd.ExecuteReader(); //vérification si fin de la table if (oRdr.HasRows) { //effectue une opération de lecture oRdr.Read(); //récupération dans eps le champ eps depuis la table elektor bool eps = oRdr.GetBoolean(7); //récupération dans ess le champ ess depuis la table elektor bool ess = oRdr.GetBoolean(8); //récupération dans comp le champ compos depuis la table elektor bool comp = oRdr.GetBoolean(10); //remplissage du tittre de l'article. article.textBox1.Text = oRdr.GetString(5); //remplissage de l'anne, mois, page article.textBox2.Text = oRdr.GetString(3) + " / " + oRdr.GetString(2) + " / " + oRdr.GetString(4); //remplissage de la catégorie d'article. article.textBox3.Text = EITF2.Cate(oRdr.GetString(9)); //remplissage du numéro d'article. article.textBox4.Text = oRdr.GetString(0); //remplissage du numéro de magazine article.textBox5.Text = oRdr.GetString(1); //remplissage de la zone circuit imprimé if (eps == true) { //ferme la lecture de la table elektor oRdr.Close(); //recherche dans la table pservice le numéro du circuit imprimé oCmd.CommandText = "SELECT * FROM PSERVICE WHERE ART_NR" + Donnee; //exécition de la commande oRdr = oCmd.ExecuteReader(); //efface la listebox1 ci article.listBox1.Items.Clear(); //clear la table dynamique al.Clear(); //vérification si fin de la table if (oRdr.HasRows) { //effectue une opération de lecture while (oRdr.Read()) { //remplissage des lignes de la table dynamique al avec les numéros de ci al.Add(oRdr["SERVICE_NR"]); } //affichage de la recherche for (I = 0; I < al.Count; I++) { //récupération du numéro du ci dans la table al CIR = al[I].ToString(); //affichage de la recherche article.listBox1.Items.Add(CIR); } } //ferme de la commande de lecture oRdr.Close(); //clear la table dynamique al.Clear(); } else { //efface la listebox1 ci article.listBox1.Items.Clear(); //affichage du message pas de ci article.listBox1.Items.Add("Pas de Circuit Imprimé"); //clear la table dynamique al.Clear(); //ferme de la commande de lecture oRdr.Close(); } //remplissage de la zone logiciel if (ess == true) { //recherche dans le table sservice le numéro du circuit imprimé oCmd.CommandText = "SELECT * FROM SSERVICE WHERE ART_NR" + Donnee; //exécition de la commande oRdr = oCmd.ExecuteReader(); //efface la listebox2 logiciel article.listBox2.Items.Clear(); //clear la table dynamique al.Clear(); //vérification si fin de la table if (oRdr.HasRows) { //effectue une opération de lecture while (oRdr.Read()) { //remplissage des lignes de la table dynamique al avec les logiciels recherchés al.Add(oRdr["SERVICE_NR"]); } //affichage de la recherche for (I = 0; I < al.Count; I++) { //récupération du numéro du logiciel dans la table al LOGI = al[I].ToString(); //affichage de la recherche du numéro de logiciel article.listBox2.Items.Add(LOGI); } } //ferme de la commande de lecture oRdr.Close(); //clear la table dynamique al.Clear(); } else { //efface la listebox2 logiciel article.listBox2.Items.Clear(); //affichage du message pas logiciel article.listBox2.Items.Add("Pas de logiciel"); //ferme de la commande de lecture oRdr.Close(); //clear la table dynamique al.Clear(); } //remplissage de la zone composants spéciaux if (comp == true) { //recherche dans le table komponen le numéro du circuit imprimé oCmd.CommandText = "SELECT * FROM KOMPONEN WHERE ART_NR" + Donnee; //exécition de la commande oRdr = oCmd.ExecuteReader(); //efface la listebox3 composant article.listBox3.Items.Clear(); //clear la table dynamique al.Clear(); //vérification si fin de la table if (oRdr.HasRows) { //lecture de la table while (oRdr.Read()) { //remplissage des lignes de la table dynamique al avec les composants recherché s4 = oRdr["FABRICANT"]as string; //vérifie si le champ fabricant est vide if (s4 == null) { // supprime le champ fabricant al.Add(oRdr.GetString(1)); } else { //ajoute le champ fabricant al.Add(oRdr.GetString(1) + " " + oRdr.GetString(2)); } } //effectue une opération de lecture for (I = 0; I < al.Count; I++) { //récupération du type de composant plus le fabricant COMPOSANT = al[I].ToString(); //affichage de la recherche composant plus le fabricant article.listBox3.Items.Add(COMPOSANT); } } //ferme de la commande de lecture oRdr.Close(); //clear la table dynamique al.Clear(); } else { //efface la listbox1 des valeurs précédement entrées article.listBox3.Items.Clear(); //affichage message pas de composant article.listBox3.Items.Add("Pas de composants spéciaux"); //ferme de la commande de lecture oRdr.Close(); } //copie le message xxxx (variable nbart) article.s sélectés sur un total de YYYY (variable totart) fenêtre article. article.textBox9.Text = this.textBox1.Text; //message de test //MessageBox.Show("Numéro de la ligne sélectionnée dans la datagridview " + nligne,"N°de la ligne sélectionnée",MessageBoxButtons.OK, MessageBoxIcon.Information); //envoie le numéro de ligne à la fenêtre article article.Nligne = nligne; //envoie le nombre de ligne à la fenêtre article article.Nbart = nbart; //affiche la fenêtre article. article.Show(); //cache la fenêtre listearticle //this.Visible = false; //ferme la lecture de la table elektor oRdr.Close(); } }