Как выбрать одну строку данных из элемента управления Telerik WPF GridView - PullRequest
1 голос
/ 27 мая 2010

Я играл с элементом управления WPF GridView (DesktopUI не Silverlight), и мне нужно иметь возможность выбрать конкретную строку и вернуть только данные для этой строки для просмотра в новом элементе управления, таком как список.

Кроме того, после выбора данных из строки необходимо выбрать или добавить дополнительные данные в мой список. Вариант использования здесь заключается в том, что пользователь может выбрать только одну строку / запись для экспорта или публикации.

При просмотре некоторых примеров telerik я видел несколько похожих примеров, но ничего, что полностью поддерживало этот вариант использования.

Кто-нибудь имел опыт работы с этими элементами управления и знал, может ли это быть достигнуто в WPF gridView. Мне не очень повезло с их документацией, и я попытался использовать некоторые из наследуемых функций, таких как свойство GridViewSelectColumn (которое генерирует флажок в столбце, но у меня не было никаких удач, вызывающих команды, когда флажок установлен / установлен ). Вместо флажка я должен использовать кнопку и добавить ее в качестве отдельного столбца, который пользователь может щелкнуть, например:

Если кто-нибудь может предоставить пример кода, как вызвать выбор одной строки данных, а также как отключить выбор дополнительных строк после выбора одной строки, я был бы признателен. Для отключения я предполагаю, что свойство CanUserSelect должно быть установлено в false после выбора элемента, но мне еще не удалось успешно вызвать что-либо с помощью GridViewSelectColumn.

Будем благодарны за любые образцы или ориентиры.

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2011

Я понимаю, что это старый пост. Но я хотел обратиться к этому в надежде, что это поможет другим. Для этого проекта я хотел иметь возможность выбирать записи для отдельной строки в виде сетки. Telerik GridView возвратил 5 столбцов, но коллекция (возвращенная из службы WCF) фактически содержала до 30 столбцов.

Я не собираюсь здесь рассматривать привязку данных только к тому, как был настроен выбор. Также этот sampel не следует шаблону (например, MVVM), поэтому для быстрого объяснения код был помещен в коде xaml.

Сначала мне нужно было зарегистрировать обработчики CollectionChangedEvent. Это происходило каждый раз, когда я выбирал строку в представлении Grid, она генерировала коллекцию в памяти всех элементов на основе выбранной строки.

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

И для измененного события SelectedItem_Collection

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

В основном здесь происходит, когда при выборе записи обнаруживаются элементы из выбранной строки (включая все элементы, не показанные в сетке). Это делается путем установки index = для e.NewItems [0] из моего веб-сервиса, который затем добавлен в новую коллекцию (currentItem) в памяти.

Примечание: currentItem был объявлен в основном классе как:

 public myWCFService.Item currentItem;

Как только это было сделано, у меня была возможность передавать данные из выбранной строки (сохраненной в коллекции currentItem) в другие коллекции / элементы управления

...