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

Silverlight Discussion :

RIA : select distinct


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Par défaut RIA : select distinct
    Bonjour à tous,

    Après consultation de l'article WCF-RIA, je me lance dans mon apprentissage... J'ai créé dans ma page un formulaire avec plusieurs combobox dans lesquels je place différentes données grâce à RIA Services. C'est super !
    J'aimerais pouvoir filtrer le contenu de certaines combo, par exemple n'afficher que les éléments distincts.

    Pour être plus clair :
    Source : A,A,D,E,A,F
    Combo : A,D,E,F

    Je n'ai pas trouvé la possibilité de le faire disons facilement depuis Visual Studio (dans l'esprit de l'article cité). Cela existe-t-il ? Ou bien faut-il que je passe par une autre méthode ?

    Je ne sais pas s'il faut passé par LINQ ou utiliser les méthodes de WFC RIA Services. Quelle serait la méthode la plus simple pour un débutant ?

    Merci pour votre aide

  2. #2
    Membre confirmé Avatar de wil4linux
    Inscrit en
    Février 2005
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2005
    Messages : 205
    Par défaut
    Si tu passes juste par une liste de string à ta combo, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    List<string> taListe = new List<string>();
    taListe .Add("a");
    taListe .Add("a");
    taListe .Add("b");
    taListe .Add("c");
     
    laCombo.ItemsSource = taListe.Distinct();
    C'est Linq qui va te faire faire le distinct tout seul.


    Sinon, autrement :

    Exemple :
    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
     
    Exemple de classe : 
    Public class TUTU
    {
       public string champ1;
       public string champ2;
    }
     
    List<TUTU> taListe = new List<TUTU>();
    taListe.Add(new TUTU() { champ1 = "a", champ2 = "b" });
    taListe.Add(new TUTU() { champ1 = "a", champ2 = "c" });
    taListe.Add(new TUTU() { champ1 = "a", champ2 = "d" });
     
    //Si tu veux juste passer une chaine dans la combo et non l'objet:
     
    laCombo.ItemsSource = taListe.Select(x=>x.champ1).Distinct();
     
    //Sinon si tu veux passer une liste d'objets à ta combo et afficher que le
    //champ1 en distinct, il faut passer par l'interface IEqualityComparer.
     
    laCombo.ItemsSource = taListe.Distinct(new TUTUComparer());
     
    //Code de l'interface IEqualityComparer:
        public class TUTUComparer : IEqualityComparer<TUTU>
        {
            #region IEqualityComparer<TUTU> Members
     
            public bool Equals(TUTU x, TUTU y)
            {
                //Ajoute tes comparaison ICI s'il y en d'autres...
                return (x.champ1== y.champ1);
            }
     
            public int GetHashCode(TUTU obj)
            {
                return obj.champ1.GetHashCode();
            }
     
            #endregion
        }

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Par défaut
    Bonjour wil4linux,

    Merci pour ta réponse. Je vais testé et te tiens informé.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Par défaut
    Bonjour,

    Bon je sèche ...

    Voilà ma situation : une combobox que je sélectionne dans "Source de données" crée à partir de RIA Services. Je voudrais y insérer la liste des séances, certaines portant le même nom (mais pas la même date) je ne veux que les noms distincts. C'est relativement clair dans mon esprit mais du coup je ne vois pas où je dois faire mon filtre malgré les infos de wil4linux.

    Faut-il que j'effectue cela côté XAML ? J'ai lu plusieurs documentation mais j'avoue ne pas faire le tri dans toutes ces informations et ne parviens pas à appliquer ce qui m'a été donné.

    Merci pour votre aide ...

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Par défaut
    Pour être plus clair :
    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
     
     <Grid x:Name="LayoutRoot">
            <riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:SEANCES, CreateList=true}" Height="0" LoadedData="sEANCESDomainDataSource_LoadedData_1" Name="sEANCESDomainDataSource" QueryName="GetSEANCESQuery" Width="0">
                <riaControls:DomainDataSource.DomainContext>
                    <my:DomainServiceSEANCES />
                </riaControls:DomainDataSource.DomainContext>
            </riaControls:DomainDataSource>
            <Grid DataContext="{Binding ElementName=sEANCESDomainDataSource, Path=Data}" HorizontalAlignment="Left" Margin="127,209,0,0" Name="grid1" VerticalAlignment="Top">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <sdk:Label Content="NOM:" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                <ComboBox DisplayMemberPath="NOM" Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Left" ItemsSource="{Binding}" Margin="3" Name="nOMComboBox" VerticalAlignment="Center" Width="120">
                    <ComboBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel />
                        </ItemsPanelTemplate>
                    </ComboBox.ItemsPanel>
                </ComboBox>
            </Grid>
        </Grid>
    La question est donc comment remonter uniquement les éléments distincts ? Et d'où ? XAML, code C# ?
    Merci pour votre aide.

Discussions similaires

  1. [MySQL] Problème récupération de données avec un SELECT DISTINCT
    Par 12_darte_12 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2005, 14h48
  2. Select distinct
    Par mic79 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/04/2005, 16h30
  3. select distinct substring
    Par nmerydem dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/06/2004, 16h58
  4. Select distinct et order by
    Par arsgunner dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/06/2004, 11h17
  5. equivalent SELECT DISTINCT pour MyBase?
    Par chrisou31 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/03/2004, 19h33

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