Sélection garantie de ligen de grille C#

ayouta.gfs Messages postés 77 Statut Membre -  
ayouta.gfs Messages postés 77 Statut Membre -
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. Nico# Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   102
     
    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
  2. ayouta.gfs Messages postés 77 Statut Membre 2
     
    Salut , Merci bien pour votre passage
    une question ,
    if(datagrid.selectedItems.Count == 0)

    ou

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

    que signifie exactement ? svp
    0
  3. Nico# Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   102
     
    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
  4. ayouta.gfs Messages postés 77 Statut Membre 2
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Nico# Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   102
     
    Colle moi ton code pour voir
    0
  7. ayouta.gfs Messages postés 77 Statut Membre 2
     
    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
  8. Nico# Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   102
     
    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
  9. ayouta.gfs Messages postés 77 Statut Membre 2
     
    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. ayouta.gfs Messages postés 77 Statut Membre 2
       
      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