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 services et dropdownlist


Sujet :

Silverlight

  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut RIA services et dropdownlist
    Salut !
    Je suis en train d'essayer de faire un Dataform avec une dropdown list et j'ai des comportements bizarre ... Je ne pensais pas que ca serait si complexe

    J'ai des objets Todo lié a un object Category par une propriété Category.
    J'ai une datagrid a gauche et une dataform a droite.
    Je sélectionne la 3eme ligne, je change l'objet category et la cela change aussi la category de la premiere ligne ! Comme si la dropdown était lié aux 2 objets ... Bizarre ...

    Vous voyez où est le problème ?





    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
    public class TodoListViewModel : ContextViewModelBase
    {
        public TodoListViewModel()
        {
            AddCommand = new RelayCommand(Add);
     
            Categories = new ObservableCollection<Category>();
            Todos = new ObservableCollection<Todo>();
     
            LoadCategories();
            LoadTodos();
        }
     
        public ICommand AddCommand { get; protected set; }
     
        public ICollection<Category> Categories { get; set; }
        public ICollection<Todo> Todos { get; set; }
     
        public virtual void Add()
        {
            var todo = new Todo();
            Context.Todos.Add(todo);
            Todos.Add(todo);
        }
     
        public void LoadCategories()
        {
            Context.Load(Context.GetCategoryQuery(), 
                l => Categories.Reload(l.Entities), 
                true);
        }
     
        private void LoadTodos()
        {
            Context.Load(Context.GetTodoQuery(),
                    l => Todos.Reload(l.Entities),
                    true);
        }
    }
    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
    <navigation:Page x:Class="RiaServicesSample.Views.Todos.TodoList" 
               Title="TodoList Page" x:Name="Root">
        <navigation:Page.Resources>
            <CollectionViewSource x:Key="CategorySource" Source="{Binding Categories}" />
            <CollectionViewSource x:Key="TodoSource" Source="{Binding Todos}" />
        </navigation:Page.Resources>
     
        <tk:DockPanel x:Name="LayoutRoot">
     
            <Grid tk:DockPanel.Dock="Top">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
     
                <Button Grid.Column="0" Content="Add" Command="{Binding AddCommand}" />
                <Button Grid.Column="1" Content="Save" Command="{Binding SubmitCommand}" />
                <Button Grid.Column="2" Content="Cancel" Command="{Binding CancelCommand}" />
            </Grid>
            <df:DataForm tk:DockPanel.Dock="Right" AutoGenerateFields="True"
                         CurrentItem="{Binding SelectedItem, ElementName=Grid, Mode=TwoWay}" CommandButtonsVisibility="All">
                <df:DataForm.EditTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <df:DataField>
                                <TextBox Text="{Binding Title, Mode=TwoWay}" />
                            </df:DataField>
                            <df:DataField>
                                <TextBox Text="{Binding Description, Mode=TwoWay}" MinHeight="200" MaxHeight="500" />
                            </df:DataField>
                            <df:DataField>
                                <ComboBox ItemsSource="{Binding Source={StaticResource CategorySource}}" DisplayMemberPath="Name"
                                          SelectedItem="{Binding Category, Mode=TwoWay}"/>
                            </df:DataField>
                        </StackPanel>
                    </DataTemplate>
                </df:DataForm.EditTemplate>
            </df:DataForm>
            <data:DataGrid x:Name="Grid" ItemsSource="{Binding Source={StaticResource TodoSource}}" />
        </tk:DockPanel>
    </navigation:Page>
    Merci.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Huh

    Alors là je dois dire que je vois vraiment pas.

    (en fait ce message est là pour m'abonner et là discussion et pour dire que je suis de tout coeur avec toi )

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    A la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Context.Load(Context.GetTodoQuery(),
                    l => Todos.Reload(l.Entities),
                    true);
    Essaye, dans la callback, d'ajouter les elements un a un avec un foreach:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Context.Load(Context.GetTodoQuery(),
                    l => {
                               Todos.Clear();
     
                               foreach(var todo in l.Entities)
                               {
                                      Todos.Add(todo);
                               }
                           }
                    true);
    On ne sait jamais....

  4. #4
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Huh

    Alors là je dois dire que je vois vraiment pas.

    (en fait ce message est là pour m'abonner et là discussion et pour dire que je suis de tout coeur avec toi )
    Merci


    Ah oui thomas, excuse mon manque d'informations ...
    Mon .Reload() est une méthode d'extension qui fait exactement ton bout de code.

    Finalement, après quelque (trop longues) recherches sur la toile, il s’avère qu'il y a un bug dans le edittemplate de la dataform utilisé avec un combobox sur des entités généré par RIA Services.

    En plaçant mes controles directement dans la dataform et pas dans un DataTemplate sur l'EditTemplate cela fonctionne correctement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/11/2009, 08h20
  2. .Net RIA Services et les règles de Validations
    Par Steven62 dans le forum Silverlight
    Réponses: 4
    Dernier message: 26/08/2009, 15h08
  3. RIA Services LazyLoading
    Par Xeron dans le forum Silverlight
    Réponses: 1
    Dernier message: 25/08/2009, 17h19
  4. Silverlight 3, RIA Services - En Prévision..
    Par 3KyNoX dans le forum Silverlight
    Réponses: 4
    Dernier message: 17/07/2009, 13h49
  5. XMLParserexection dans DomaiDataSource (.NET Ria Service)
    Par bleuerouge dans le forum Silverlight
    Réponses: 1
    Dernier message: 22/06/2009, 03h43

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