Sélection garantie de ligen de grille C#

Bonjour,

Je travaille sur un projet sous C# .net où j'utilise un datagrid

je veux garantir qu'avant par exemple la suppression d'une ligne de grille (datagrid) , la ligne soit sélectionnée par l'utilisateur !

Comment est l'instruction ? et c'est quoi son espace de noms que je dois utiliser ?

merci pour la réponse

8 réponses

  1. Slt il te suffit juste de mettre un condition par exemple
    if(datagrid.selectedItems.Count == 0)
    ou
    if ( datadrid.selectedItems[0] == null)


    Le deuxieme cas peut te servir pour caster dans un type personnel exemple tu affiche des données personnel de type Humain:

    public string Civilité{get;set;}
    public string Nom{get;set;}
    public string Prénom{get;set;}


    Tu peux crée une
     List<Humain>
    et faire
    datagrid.ItemsSource = Talist" List<Humain>";


    en ensuite tu peux faire
    var a = datagrid.selectedItems[0] as Humain;


    if(a!=null)
    {
    a.Nom......
    }
    0
    1. Salut , Merci bien pour votre passage
      une question ,
      if(datagrid.selectedItems.Count == 0)

      ou

      if ( datagrid.selectedItems[0] == null)

      que signifie exactement ? svp
      0
      1. selectedItems et de type IList<> c'est a dire que tu as une propriete qui permet de connaitre le nombre d'element dans cette liste la propriete c'est le Count donc si count == 0 cela veut dire que tu as aucun element selectionné et donc rien ne sert de continue ton traitement.
        pour

        if ( datagrid.selectedItems[0] == null) etant donnée que c'est une liste (cf plus haut) tu accéde aux donnée comme pour un tableau avec les [] et comme le premier index et 0 et si le premier index et vide cela veut dire que tu n'as pas de ligne selectrionné
        0
        1. Bien , merci Nico# ,

          mé le problème c'est ca marche pas dans mon code ! :'(

          la condition n'est pas satisfaisante , soit je présélectionne ou non ! l'exécution passe ! une autre solution possible , vraiment ... !!
          0
          1. Volà mon code :)

            if (this.gridEXEmp.SelectedItems.Count !=0)
            {
            DialogResult réponse = MessageBox.Show("Voulez vous vraiment Supprimer cet Employé?!", "Suppression", MessageBoxButtons.YesNo);
            if (réponse == DialogResult.Yes)
            {
            try
            {

            String chcnx = "DELETE FROM Employé WHERE Matricule= @Matricule";
            usrconnection uc = new usrconnection();
            SqlConnection cnx = usrconnection.Connexion();
            SqlCommand cmd = new SqlCommand(chcnx, cnx);
            SqlParameter par = new SqlParameter("@Matricule", SqlDbType.BigInt, 8);
            cmd.Parameters.Add(par);
            par.Value = gridEXEmp.SelectedItems[0].GetRow().Cells["Matricule"].Text;
            cmd.ExecuteNonQuery();
            MessageBox.Show("Employé Supprimé");
            this.gridEXEmp.Hide();
            GridEmp frmT = new GridEmp();
            frmT.ShowDialog();
            usrconnection.clscnx(cnx);
            }
            catch (SqlException)
            {
            MessageBox.Show("Suppression impossible");
            }
            }

            }
            else { MessageBox.Show("Vous devez séléctionnez l'employé à supprimer ", "STOP"); }
            0
            1. if (this.gridEXEmp.SelectedRows.Count !=0)
              {
              DialogResult réponse = MessageBox.Show("Voulez vous vraiment Supprimer cet Employé?!", "Suppression", MessageBoxButtons.YesNo);
              if (réponse == DialogResult.Yes)
              {
              try
              {
              
              String chcnx = "DELETE FROM Employé WHERE Matricule= @Matricule";
              usrconnection uc = new usrconnection();
              SqlConnection cnx = usrconnection.Connexion();
              SqlCommand cmd = new SqlCommand(chcnx, cnx);
              SqlParameter par = new SqlParameter("@Matricule", SqlDbType.BigInt, 8);
              cmd.Parameters.Add(par);
              par.Value = gridEXEmp.SelectedItems[0].GetRow().Cells["Matricule"].Text;
              cmd.ExecuteNonQuery();
              MessageBox.Show("Employé Supprimé");
              this.gridEXEmp.Hide();
              GridEmp frmT = new GridEmp();
              frmT.ShowDialog();
              usrconnection.clscnx(cnx);
              }
              catch (SqlException)
              {
              MessageBox.Show("Suppression impossible");
              }
              }
              
              }
              else { MessageBox.Show("Vous devez séléctionnez l'employé à supprimer ", "STOP"); }


              la ton code devrait fonctionner car ce n'est pas selectedItems mais SelectedRows cepandant je sais pas pourquoi tu as réussi a trouver cette proprieté car elle n'existe pas en winform j'ai confondu avec une combobox tu utilise quel outils pour developper

              Ci joint mon test qui fonctionne
              using System;
              using System.Collections.Generic;
              using System.ComponentModel;
              using System.Data;
              using System.Drawing;
              using System.Linq;
              using System.Text;
              using System.Windows.Forms;
              
              namespace WindowsFormsApplication3
              {
                  public partial class Form1 : Form
                  {
                      List<Homme> _list = new List<Homme>();
                      public Form1()
                      {
                          InitializeComponent();
                      }
              
                      private void Form1_Load(object sender, EventArgs e)
                      {
                         _list.Add(new Homme(){Nom = "Dupond",Prenom = "Nicolas"});
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          _list.Add(new Homme() { Nom = "Dupond", Prenom = "Nicolas" });
                          dataGridView1.DataSource = _list;
                      }
              
                      private void button1_Click(object sender, EventArgs e)
                      {
              
                          if (this.dataGridView1.SelectedRows.Count != 0)
                          {
                              DialogResult réponse = MessageBox.Show("Voulez vous vraiment Supprimer cet Employé?!", "Suppression", MessageBoxButtons.YesNo);
                              if (réponse == DialogResult.Yes)
                              {
                                  try
                                  {
              
                                      MessageBox.Show("Ok");
                                  }
                                  catch (Exception)
                                  {
                                      MessageBox.Show("Suppression impossible");
                                  }
                              }
              
                          }
                          else { MessageBox.Show("Vous devez séléctionnez l'employé à supprimer ", "STOP"); }
                      }
                  }
              
                  public class Homme
                  {
                      public string Nom { get; set; }
                      public string Prenom { get; set; }
                  }
              }
              0
              1. Ma datagrid est sous janus winforms controls :) ! ey j'utlise le visual studio 2008

                or que chez moi la propriété SelectedRows n'est pas possible ! :D je ne sais pas pourquoi ?!

                Je vais réessayer Nico# merci pour ton intérêt !
                0
                1. une solution qui m'a résolu le problème Nico# :D

                  la voilà

                  int i = -1;
                  try
                  {
                  string k = this.gridEXEmp.CurrentColumn.Index.ToString();
                  i = Convert.ToInt16(k);
                  }
                  catch
                  {
                  MessageBox.Show("Vous devez sélectionner une ligne où Supprimer", "STOP" , MessageBoxIcon.Warning);
                  }

                  if(i>=0)
                  { // Supprimession }

                  merci pour votre patience et gentillesse
                  0