Sélection garantie de ligen de grille C#

ayouta.gfs Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   -  
ayouta.gfs Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

8 réponses

Nico# Messages postés 323 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
ayouta.gfs Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   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
Nico# Messages postés 323 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
ayouta.gfs Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   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

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

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