如何从telerik WPF GridView控件中选择一行数据

时间:2010-05-27 16:32:59

标签: wpf wpf-controls telerik-grid

我一直在使用WPF GridView控件(DesktopUI而不是Silverlight),我需要能够选择一个特定的行,并且只返回该行的数据,以便在新控件(例如列表框)中查看。

此外,一旦选择了行中的数据,就需要禁用选择或向列表框添加其他数据的功能。这里的用例是用户只能选择一行/记录来导出或发布。

在查看一些telerik示例时,我看到了一些类似的例子,但没有完全支持这个用例。

有没有人对这些控件进行了解决,并知道这是否可以在WPF gridView中完成。我没有太多运气他们的文档,我试图使用一些继承功能,如GridViewSelectColumn属性(在列中生成一个复选框,但我没有任何运气调用命令,当选中/选中复选框)。我应该使用一个按钮并将其添加为用户可以单击的独立列,而不是复选框,例如:              
   

如果有人可以提供如何调用一行数据的选择的代码示例,以及如果在选择单行后如何禁用其他行的选择,我将不胜感激。对于禁用,我假设一旦选择了一个项目,CanUserSelect属性需要设置为false,但我还没有成功地使用GridViewSelectColumn调用任何东西。

任何样本或参考点都将受到赞赏。

谢谢

1 个答案:

答案 0 :(得分:0)

我意识到这是一个老帖子。但我想在跳跃中解决这个问题,它会帮助别人。对于这个项目,我希望能够在网格视图中为spcecific行选择记录。 Telerik GridView返回5列,但集合(从WCF服务返回)实际上包含最多30列。

我不打算在这里解决数据绑定的问题。此示例也不遵循模式(例如MVVM),因此为了快速浏览,代码被放置在xaml代码隐藏中。

首先,我需要注册CollectionChangedEvent处理程序。这样做的是每次我在网格视图中选择一行时,它会根据所选行生成所有项目的内存中集合。

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 =设置到我的webservice中的e.NewItems [0]来完成的。添加到内存中的新集合(currentItem)。

注意:currentItem在主类中声明为:

 public myWCFService.Item currentItem;

完成此操作后,我可以将所选行(存储在currentItem集合中)的数据传递给其他集合/控件