IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Edit ComboBox DataGridTemplateColumn


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 38
    Points : 24
    Points
    24
    Par défaut Edit ComboBox DataGridTemplateColumn
    Bonjour,

    J'ai un dans un DataGrid un "DataGridTemplateColumn" qui contient un TextBlock et une ComboBox.

    L'idée est que dans mon Datagrid à l'affichage j'ai mon TextBlock qui affiche la valeur (qui provient d'une BDD) et que lorsque je click dessus, j'ai ma ComboBox pour éditer cette valeur.

    À l'heure actuelle, j'arrive à faire ça, je peux éditer et update dans la BDD mais SEULEMENT pour la première ligne... Lorsque je veux modifier une autre ligne c'est toujours la comboBox de la première ligne qui est pris en compte !

    XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <DataGridTemplateColumn Header="Valideur" Width="Auto">                               
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Name="textblock_valideur" Text="{Binding valideur}" />
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                    <DataGridTemplateColumn.CellEditingTemplate>
                                        <DataTemplate>
                                            <ComboBox x:Name="combobox_valideur" Height="Auto" ItemsSource="{StaticResource ValideurList}" SelectedItem="{Binding valideur, UpdateSourceTrigger=LostFocus}" DisplayMemberPath="{Binding Name}" DataContextChanged="comboBox_valideur_DataContextChanged"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellEditingTemplate>
                                </DataGridTemplateColumn>
    C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    public static T FindChild<T>(DependencyObject parent, string childName) where T : DependencyObject
            {
                if (parent == null)
                {
                    return null;
                }
     
                T foundChild = null;
     
                int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
     
                for (int i = 0; i < childrenCount; i++)
                {
                    var child = VisualTreeHelper.GetChild(parent, i);
                    T childType = child as T;
     
                    if (childType == null)
                    {
                        foundChild = FindChild<T>(child, childName);
     
                        if (foundChild != null) break;
                    }
                    else
                        if (!string.IsNullOrEmpty(childName))
                    {
                        var frameworkElement = child as FrameworkElement;
     
                        if (frameworkElement != null && frameworkElement.Name == childName)
                        {
                            foundChild = (T)child;
                            break;
                        }
                        else
                        {
                            foundChild = FindChild<T>(child, childName);
     
                            if (foundChild != null)
                            {
                                break;
                            }
                        }
                    }
                    else
                    {
                        foundChild = (T)child;
                        break;
                    }
                }
     
                return foundChild;
            }
     
            private void comboBox_valideur_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
            {
                object item = dataGrid.SelectedItem;
                textblox_valideur_save = FindChild<TextBlock>(this.dataGrid, "textblock_valideur");
                MessageBox.Show(textblox_valideur_save.Text);            
            }
    Suis-je peut-être dans la mauvaise direction avec ma façon de faire ?

    Merci d'avance pour votre aide

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Petit up ?!

Discussions similaires

  1. Où trouver un composant "Editable combobox"
    Par romaintaz dans le forum JSF
    Réponses: 2
    Dernier message: 17/08/2007, 08h39
  2. Réponses: 2
    Dernier message: 06/08/2007, 18h04
  3. couleur sur la zone edit d'un combobox
    Par lucky dans le forum MFC
    Réponses: 2
    Dernier message: 04/12/2006, 16h12
  4. edition d'un combobox
    Par kirua2150 dans le forum Delphi
    Réponses: 3
    Dernier message: 26/06/2006, 18h17
  5. combobox et edit
    Par Fallenseb dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/06/2003, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo