Comment sélectionner une ligne de données à partir d'une commande de telerik WPF GridView

StackOverflow https://stackoverflow.com/questions/2922967

  •  05-10-2019
  •  | 
  •  

Question

J'ai été jouer avec le contrôle WPF GridView (DesktopUI pas Silverlight) et je dois être en mesure de sélectionner une ligne spécifique et seulement les données de cette ligne de retour pour l'affichage dans un nouveau contrôle, comme une zone de liste.

En outre, une fois que les données d'une ligne a été sélectionnée la possibilité de sélectionner ou ajouter des données supplémentaires à mes besoins listbox est désactivé. Le cas d'utilisation est ici qu'un utilisateur ne peut sélectionner une ligne / enregistrement à exporter ou publier.

En regardant à travers quelques-uns des échantillons de Telerik j'ai vu quelques exemples similaires, mais rien qui soutient pleinement ce cas d'utilisation.

Quelqu'un at-il eu expereince avec ces contrôles et savoir si cela peut-il être réalisé dans un WPF GRIDVIEW. Je ne l'ai pas eu beaucoup de chance avec leur documentation et j'ai essayé d'utiliser certaines Hériter fonctionnalités telles que la propriété GridViewSelectColumn (qui génère une case à cocher dans une colonne, mais je ne l'ai pas eu de commandes invoquant la chance lorsqu'une case est cochée / cochée ). Au lieu de la case à cocher dois-je regarder d'utiliser un bouton et ajouter que comme une colonne autonome qui l'utilisateur peut cliquer comme:              
   

Si quelqu'un peut fournir un exemple de code de la façon d'invoquer la sélection d'une ligne de données, ainsi que la façon de désactiver le seletion de lignes supplémentaires une fois une seule ligne a été sélectionnée, je vous serais reconnaissant. Pour la désactiver, je suppose que les besoins immobiliers de CanUserSelect à être à false fois qu'un élément a été sélectionné, mais je dois encore pu invoquer avec succès tout en utilisant le GridViewSelectColumn.

Tous les échantillons ou points de référence serait apprécié.

Merci

Était-ce utile?

La solution

Je sais que c'est un ancien poste. Mais je voulais aborder cela dans le hopse il aider les autres. Pour ce projet, je voulais avoir la possibilité de sélectionner des enregistrements pour une ligne spcecific dans une vue de la grille. Le Telerik GridView retourné 5 colonnes, mais la collection (de retour d'un service WCF) fait contenaient jusqu'à 30 colonnes.

Je ne vais pas répondre à la liaison de données ici que la façon dont la sélection a été installé. De plus, cette sampel ne suit pas un schéma (comme MVVM) donc pour explination rapidement le code a été placé dans le XAML code-behind.

Tout d'abord, je devais enregistrer CollectionChangedEvent Handlers. Ce que cela a été chaque fois que je sélectionné une ligne wihtin la vue Grille, il a généré une collection en mémoire de tous les éléments en fonction de la ligne sélectionnée.

this.myGridView.Loaded += (o, e) =>
      {
          this.myGridView.SelectedItems.CollectionChanged += new NotifyCollectionChangedEventHandler(SelectedItem_CollectionChanged);
      };

Et pour le SelectedItem_Collection changé l'événement

        void Item_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (e.Action == NotifyCollectionChangedAction.Add)
        {
            var index = e.NewItems[0] as myWCFService.Index;
            currentItem = index.Item;
        }
    }

En fait ce qui se passe ici est quand une sélection d'enregistrement est détecté les éléments de la ligne sélectionnée (y compris tous les éléments non représentés sur la grille) Cela se fait par Seting index = aux e.NewItems [0] de mon webservice qui est ensuite ajouté à une nouvelle collection (currentItem) en mémoire.

Note: currentItem a été déclaré dans la classe principale comme:

 public myWCFService.Item currentItem;

Une fois que cela a été fait, j'ai eu la possibilité de transmettre les données de la ligne sélectionnée (stocké dans la collection currentItem) à d'autres collections / contrôles

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top