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 :

DataGrid et Combobox dans cellules


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut DataGrid et Combobox dans cellules
    Bonjour,
    C'est encore moi !
    J'ai un problème avec les datagrid, je souhaite avoir dans certaines cellules d'une même colonne des combobox, mais pas dans toute la colonne.
    Les choix possibles des combobox sont fixes et ne changent jamais.

    Je donne l'image de ma datagrid.
    Je veux que les cellules qui ont des true (que je peux changer facilement en oui) donnent une combobox avec oui et non comme choix.

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Utilise une colonne de type DataGridTemplateColumn.

    Il y a des propriétés CellTemplateSelector et EditingCellTemplateSelector, qui permettent de définir des sélecteurs (DataTemplateSelector) pour choisir dynamiquement le template à utiliser, en fonction de la colonne

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci, même si je pense que j'en ait pour un moment pour faire ça.

    Autre question bête, comment je crée une resources avec juste deux infos :
    Oui et Non pour faire une StaticResource (je suis pas obliger de faire une classe pour ça ? )

    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
    <DataGridTemplateColumn Header="Status" Width="100">
     
                                <DataGridTemplateColumn.CellTemplate>
     
                                    <DataTemplate>
     
                                        <TextBlock Text="{Binding Valeurs}"/>
     
                                    </DataTemplate>
     
                                </DataGridTemplateColumn.CellTemplate>
     
                                <DataGridTemplateColumn.CellEditingTemplate>
     
                                    <DataTemplate>
     
                                        <ComboBox Height="22"  ItemsSource="{StaticResource OuiNon}"  SelectedItem="{Binding Valeurs}"/>
     
                                    </DataTemplate>
     
                                </DataGridTemplateColumn.CellEditingTemplate>
     
     
                            </DataGridTemplateColumn>

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu peux mettre des valeurs true/false, avec un ItemTemplate qui affiche oui ou non selon la valeur :

    Par exemple :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        <ComboBox SelectedItem="{Binding LaPropriétéQueTuVeux}">
          <sys:Boolean>True</sys:Boolean>
          <sys:Boolean>False</sys:Boolean>
          <ComboBox.ItemTemplate>
            <DataTemplate DataType="{x:Type sys:Boolean}">
              <TextBlock Name="textValue" Text="Non" />
              <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding}" Value="True">
                  <Setter TargetName="textValue" Property="Text" Value="Oui" />
                </DataTrigger>
              </DataTemplate.Triggers>
            </DataTemplate>
          </ComboBox.ItemTemplate>
        </ComboBox>

    C'est une des approches possibles, mais il y en a plein d'autres. Tu pourrais aussi utiliser un converter qui transforme true/false en oui/non... ou même utiliser une CheckBox avec un template qui lui donne l'apparence d'une CheckBox
    (ça parait bizarre, mais ça aurait un certain sens vu que les valeurs oui/non sont souvent représentées par des checkbox)

    Petit exemple de cette dernière possibilité (testé sous Kaxaml) :

    Code XML : 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
    <Page
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:sys="clr-namespace:System;assembly=mscorlib">
      <Page.Resources>
        <Style x:Key="ComboCheckBoxStyle" TargetType="{x:Type CheckBox}">
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="{x:Type CheckBox}">
                <ComboBox>
                  <ComboBoxItem Name="trueItem" IsSelected="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}}">Oui</ComboBoxItem>
                  <ComboBoxItem Name="falseItem">Non</ComboBoxItem>
                </ComboBox>
                <ControlTemplate.Triggers>
                  <Trigger Property="IsChecked" Value="False">
                    <Setter TargetName="falseItem" Property="IsSelected" Value="True" />
                  </Trigger>
                </ControlTemplate.Triggers>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>
      </Page.Resources>
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition />
          <RowDefinition />
        </Grid.RowDefinitions>
        <CheckBox Grid.Row="0" Name="chk1" Width="100" Height="23" IsThreeState="True" />
        <CheckBox Grid.Row="1" Name="chk2" Width="100" Height="23"
                  Style="{StaticResource ComboCheckBoxStyle}"
                  IsThreeState="True"
                  IsChecked="{Binding IsChecked, ElementName=chk1}"/>
      </Grid>
    </Page>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord merci.

    Mais j'ai un problème avec sys:boolean, il me manque un assembly.
    Et dés que je rajoute,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlns:sys="clr-namespace:System;assembly=mscorlib">
    J'ai pleins d'erreurs qui apparaisent.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par sandav Voir le message
    Et dés que je rajoute,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlns:sys="clr-namespace:System;assembly=mscorlib">
    J'ai pleins d'erreurs qui apparaisent.
    C'est pourtant bien ça qu'il faut rajouter... C'est quoi les erreurs ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Il me dit que la propriété content est définie plusieurs fois.

    en fait tout mon code est souligné.
    Images attachées Images attachées  

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    je vois pas grand chose sur ton screenshot, poste plutôt le code...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci, ça fonctionne.
    dans la ligne
    xmlns:sys="clr-namespace:System;assembly=mscorlib">
    Il y avait le > en trop !!!

    La combobox est bien la avec Oui / Non.

    Maintenant je voudrais que dans certain cas, il y une combobox ou une textbox en fonction de la valeur du binding.

    Mais je ne sais pas si c'est possible.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par sandav Voir le message
    Maintenant je voudrais que dans certain cas, il y une combobox ou une textbox en fonction de la valeur du binding.
    Comme je t'ai dit, utilise les propriétés CellTemplateSelector et EditingCellTemplateSelector pour choisir dynamiquement le template à utiliser

    Par contre, tu vas peut-être avoir un problème... tu fais quoi si la valeur est null ? Il faudrait un truc qui t'indique quel est le type de la valeur...

    Quel est le modèle de données sur lequel tu te bind ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Encore merci.

    Pour l'instand j'envoi que des strings
    Mais réelement dans ma base, il y a des boolean, string et entier.
    Je sais que c'est vraiment pas propre d'avoir fait un datagrid pour ça mais j'ai pas le choix, c'est une vielle application (de 1999) en VB6 que je doit reprendre en VB2010 et WPF.
    Je n'ai jamais coder en WPF. Et j'ai commencer la semaine dernière le projet.
    J'ai vraiment du mal avec le WPF.

    Il n'y a jamais de valeur null. En fait je crée une observablecollection de 10 éléments qui proviènnent de 10 colonnes de ma base de donnée.
    Et je fais le bind avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim pref As New ListCollectionView(MyPreferences)
            pref.GroupDescriptions.Add(New PropertyGroupDescription("Groupe"))
            DataGridPreference.DataContext = pref
    Pour avoir des groupes dans la datagrid.

    Je vais regarder les commandes que tu me donnes.

    PS : on fait comment pour faire en sorte que les codes soit avec la couleur ?

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par sandav Voir le message
    J'ai vraiment du mal avec le WPF.
    Si ça peut te rassurer, c'est le cas de tout le monde au début
    WPF est une techno extrêmement puissante, mais le temps d'apprentissage est nettement plus long qu'avec Windows Forms par exemple. Il faut parfois "désapprendre" ce que tu avais l'habitude de faire dans d'autres technos...

    Citation Envoyé par sandav Voir le message
    PS : on fait comment pour faire en sorte que les codes soit avec la couleur ?
    Il faut juste préciser le langage, comme indiqué ici :
    http://club.developpez.com/aidenouve...es/Balises.gif

Discussions similaires

  1. [XL-2007] Problème création de combobox dans cellule de listView
    Par fyejumpy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/06/2015, 12h28
  2. Copier valeur choisie dans ComboBox dans cellule a chaque fois differente
    Par juliematlab dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/01/2013, 09h04
  3. Combobox dans cellule de MSFlexgrid
    Par red210 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/02/2008, 16h56
  4. ComboBox dans DataGrid
    Par the big ben 5 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/12/2005, 15h47
  5. [VB.NET] ajouter combobox dans un datagrid
    Par HULK dans le forum Windows Forms
    Réponses: 6
    Dernier message: 27/10/2005, 14h30

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