none
Evénement Click DataGrid RRS feed

  • Question

  • Bonjour à tous,

     

    Je cherche à  ajouter un événement click dans mon DataGrid (dataGridService),  en utilisant mon variable (viewService) de type personnalisé (type_Servie_view) , qui est la source des données de mon datagrid. Le code utlisé est le suivant:

     

    XAML

    <DataGrid x:Name="dataGridService" HorizontalAlignment="Center" Width="233" Grid.Column="1" d:LayoutOverrides="VerticalAlignment" Margin="3,4,4,140" />

     

    Code C#

            public class type_Service_view
            {
                public string Service { get; set; }
                public int Quantité { get; set; }
                public double PU { get; set; }
            }
            public static List<type_Service_view>  viewService  =  new List<type_Service_view>();


    dataGridService.ItemsSource  =  viewService;

     

    Tout marche à merveille avec ces codes, il y a affichage du datagrid avec les contenus du variable (viewService) comme ligne et les colonnes du datagrid sont les "propriétés" de ma class "type_Service_view" c'est  à dire: Service, Quantité et PU.

     

    Mon seul problème ce que j'arrive pas à ajourter une événement click qui me permetttra de recupérer les coordonnées de la ligne selectionné.

     

    Thanks d'avance à tous pour votre aide

    mardi 19 avril 2011 12:23

Réponses

  • Bonjour,

    Pouvez-vous nous expliquer en détail ce que vous voulez faire ? Vous dites que voulez récupérer les coordonnées de la ligne sélectionnée quand vous faites un clic dans le DataGrid, donc quand la ligne sélectionnée change ? Pour cet évènement, vous pouvez utiliser le code suivant :

    private void dataGridService_SelectionChanged(object sender, SelectionChangedEventArgs e)

            {

                if (e.AddedItems.Count > 0)

                {

                   type_Service_view el = (type_Service_view)e.AddedItems[0];

                }

            }

     

    Et l’objet el contiendra les informations dont vous avez besoin.

    Cordialement,

    Cipri
    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    vendredi 22 avril 2011 08:35
  • private object _valeurSelectionne = null;
    
      void dataGridService_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
      {
        if (e.AddedCells != null)
        {
          DataGridCellInfo celluleInfo = e.AddedCells.FirstOrDefault();
          if (celluleInfo == null) return;
    
          type_Service_view ligne = celluleInfo.Item as type_Service_view;
          if (ligne == null) return;
          if (celluleInfo.Column != null)
          {
            if (celluleInfo.Column.Header.ToString() == "Service")
            {
              _valeurSelectionne = ligne.Service;
            }
            else if (celluleInfo.Column.Header.ToString() == "Quantité")
            {
              _valeurSelectionne = ligne.Quantité;
            }
            else
            {
              _valeurSelectionne = ligne.PU;
            }
          }
        }
      }
    

     

    Voici le code en plus gros, je sais pas si c'est un bug mais j'arrivais pas à modifié mon post.


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    samedi 23 avril 2011 10:26

Toutes les réponses

  • Bonjour,

    Pouvez-vous nous expliquer en détail ce que vous voulez faire ? Vous dites que voulez récupérer les coordonnées de la ligne sélectionnée quand vous faites un clic dans le DataGrid, donc quand la ligne sélectionnée change ? Pour cet évènement, vous pouvez utiliser le code suivant :

    private void dataGridService_SelectionChanged(object sender, SelectionChangedEventArgs e)

            {

                if (e.AddedItems.Count > 0)

                {

                   type_Service_view el = (type_Service_view)e.AddedItems[0];

                }

            }

     

    Et l’objet el contiendra les informations dont vous avez besoin.

    Cordialement,

    Cipri
    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    vendredi 22 avril 2011 08:35
  • Bonjour voici une solution possible mais qui peut surement être amélioré :

     

    déjà dans le xaml au niveau du Datagrid il faut mettre la propriété SelectionUnit à Cell :

    <DataGrid x:Name="dataGridService" SelectionUnit="Cell"/>
    

     

    au niveau du C# il faut vous abonner au SelectedCellsChanged et ajouter le code suivant (ce n'est qu'un exemple)  :

    private object _valeurSelectionne = null;
    
      void dataGridService_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
      {
        if (e.AddedCells != null)
        {
          DataGridCellInfo celluleInfo = e.AddedCells.FirstOrDefault();
          if (celluleInfo == null) return;
    
          type_Service_view ligne = celluleInfo.Item as type_Service_view;
          if (ligne == null) return;
          if (celluleInfo.Column != null)
          {
            if (celluleInfo.Column.Header.ToString() == "Service")
            {
              _valeurSelectionne = ligne.Service;
            }
            else if (celluleInfo.Column.Header.ToString() == "Quantité")
            {
              _valeurSelectionne = ligne.Quantité;
            }
            else
            {
              _valeurSelectionne = ligne.PU;
            }
          }
        }
      }
    

     

     


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    • Proposé comme réponse Pascal Saille samedi 23 avril 2011 10:26
    samedi 23 avril 2011 10:20
  • private object _valeurSelectionne = null;
    
      void dataGridService_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
      {
        if (e.AddedCells != null)
        {
          DataGridCellInfo celluleInfo = e.AddedCells.FirstOrDefault();
          if (celluleInfo == null) return;
    
          type_Service_view ligne = celluleInfo.Item as type_Service_view;
          if (ligne == null) return;
          if (celluleInfo.Column != null)
          {
            if (celluleInfo.Column.Header.ToString() == "Service")
            {
              _valeurSelectionne = ligne.Service;
            }
            else if (celluleInfo.Column.Header.ToString() == "Quantité")
            {
              _valeurSelectionne = ligne.Quantité;
            }
            else
            {
              _valeurSelectionne = ligne.PU;
            }
          }
        }
      }
    

     

    Voici le code en plus gros, je sais pas si c'est un bug mais j'arrivais pas à modifié mon post.


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    samedi 23 avril 2011 10:26