当前位置:  开发笔记 > 编程语言 > 正文

允许用户从DataGridView中的LINQ查询中对列进行排序

如何解决《允许用户从DataGridView中的LINQ查询中对列进行排序》经验,为你挑选了1个好方法。

我无法理解如何允许在运行时填充的DataGridView通过BindingSource排序(当用户单击列标题时)来自XML查询的LINQ是DataSource.

    Dim QueryReOrder = From Q In Query _
                       Where ((0 - Q.Qualifier) / cmbTSStakeValue.Text) <= 0.1 _
                       Order By Q.Qualifier Descending _
                       Select Q

    Dim bs As New BindingSource
    bs.DataSource = QueryReOrder
    DGFindMatch.DataSource = bs

一些DataGridView的属性是:

Sort            Nothing String
SortProperty                Nothing System.ComponentModel.PropertyDescriptor
SupportsAdvancedSorting         False   Boolean
SupportsChangeNotification      True    Boolean
SupportsFiltering           False   Boolean
SupportsSearching           False   Boolean
SupportsSorting             False   Boolean

是否有一个简单的解决方案,允许用户通过单击列标题对这些值进行排序?

谢谢!



1> Brian ONeil..:

您需要将LINQ查询的结果转换为支持排序功能的内容.这通常通过从BindingList派生类并在派生类中实现Sorting Core功能来完成.

有很多实现可供选择的例子,这是一个非常直接的实现.这是在MSDN上执行此操作的示例.

一旦实现了这一点,您只需将结果放入其中并将其用作DataSource,Grid应允许用户使用列进行排序.

    //I know that you asked the question in VB.NET but I don't know the syntax that well.
    public class SortableBindingList : BindingList
    {
         //override necessary sort core methods
    }

    SortableBindingList list = new SortableBindingList(QueryReOrder.ToList());

    //use list as your DataSource now

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有