![]() |
1
32
可以使用会话变量存储最新的排序表达式,下次对网格排序时,请将网格的排序表达式与存储最后一个排序表达式的会话变量进行比较。如果列相等,则检查前一排序的方向并按相反的方向排序。 例子:
|
![]() |
2
49
会话和视图状态的问题是,如果页面上有多个GridView,则还必须跟踪存储SortColumn和方向的GridView控件。 会话和视图状态的另一种选择是向GridView添加2个属性,并以此方式跟踪列和方向。 下面是一个例子:
|
![]() |
3
20
一个简单的解决方案:
很像默认的网格视图排序和视图状态的轻量级。 用途:
|
![]() |
4
19
自动双向排序只适用于SQL数据源。不幸的是,msdn中的所有文档都假定您正在使用它,所以gridview可能会有点令人沮丧。 我做这件事的方法就是自己跟踪订单。例如:
|
![]() |
5
15
不仅SQL数据源没有这个问题,对象数据源也没有这个问题。但是,当在代码中动态设置数据源时,情况会变糟。不幸的是,有时,MSDN的信息非常贫乏。简单地提到这种行为(这不是一个bug,而是一个设计问题)可以节省很多时间。无论如何,我不太倾向于为此使用会话变量。我通常在视图状态中存储排序方向。 |
![]() |
6
10
我这样做的方式与 accepted answer 但是,有点不同,所以我想我也会把它放在那里。请注意,此排序是对 DataTable 在它被绑定到 GridView DataSource。 选项一:使用视图状态
选项二:使用会话 请注意,如果您在字段中看到它,或者您仍然支持面向旧浏览器的公司系统,那么将为旧版目的提供以下内容。
|
![]() |
7
5
我不知道为什么每个人都忘记使用隐藏的字段!它们比ViewState(我从2005年就关闭了)便宜得多。如果您不想使用会话或视图状态,下面是我的解决方案: 将这两个隐藏字段放在您的ASPX页面上,并为您的数据设置默认排序(例如,我使用的是lastname):
然后把这个助手代码放到您的基本页中(您有一个基本页,不是吗?如果没有,请将.cs代码放在后面)。
接下来,您需要在网格排序事件处理程序中处理排序。在调用获取数据的主方法之前,从排序事件处理程序调用上面的方法
因为有这么多的示例使用数据表、数据视图或其他不支持LINQ的集合,所以我想我应该包括一个示例,一个对返回泛型列表的中间层方法的调用,并使用LINQ进行排序,以便将示例四舍五入,使其更为“真实世界”:
最后,这里是在自定义对象的通用列表上使用LINQ进行的向下的脏排序。我敢肯定,有一些更高级的东西可以实现这个技巧,但这说明了这个概念: 私有静态列表排序(String SortExpression、SortDirection SortDirection、List PendingCases) {
最后但并非最不重要(我已经说过了吗?)您可能希望在页面加载处理程序中放入类似的内容,以便网格在页面加载时默认绑定…注意_accountid是一个querystring参数,在本例中转换为我自己的accountid自定义类型…
|
![]() |
8
3
所有的答案都不完全正确。我用的是:
在GridView中\排序… |
![]() |
9
3
另一个:)不需要硬编码列名。
蚂蚁:
|
![]() |
10
3
它可以在不使用视图状态或会话的情况下完成。当前顺序可以根据排序依据列的第一行和最后一行中的值确定:
|
![]() |
11
2
|
![]() |
12
2
这可能是埋在这里的赌注,但我提出的解决方案对我的情况很有用: 窗体加载事件如下所示:
在页面上添加两个隐藏字段:
将以下内容添加到ASP:GridView对象:
使用以下GridView排序事件
现在,我的网格视图中的每一列都会排序,如果其中任何一列发生更改,就不需要进行任何进一步的更改。 |
![]() |
13
1
我用了一个GridView已经有一段时间了,但我认为在离开OnSorting方法之前,您需要将网格的SortDirection属性设置为当前的任何属性。 所以…
|
![]() |
14
1
我厌倦了处理这个问题,把排序方向和排序列放在视图状态中…… |
![]() |
15
1
要切换升序和降序,我使用应用程序基本页中的方法来缓存排序表达式和排序方向:
SortExpression和SortDirection都是基本页中的属性,用于存储和从ViewState检索它们的值。 所以我所有的派生页面都只是从GridView的排序方法调用setpagesort,并绑定GridView:
binggrid检查sortExpression并使用它和sortDirection在网格的数据源上执行ordery by,如下所示:
因此,基类的setpagesort消除了GridView排序的许多繁琐工作。我觉得我忘了什么,但这是我的一般想法。 |
![]() |
16
1
XML:
代码:
|
![]() |
17
1
这是解决问题的另一种方法:
|
![]() |
18
1
旧的字符串,但也许我的答案会帮助某人。 首先获取作为数据视图的sqldatasource:
然后使用一个扩展方法进行排序(有点低沉,但很好的开始):
|
![]() |
19
1
使用小松鼠的 solution above 这是我的完整工作生产代码。只需将dgvcoaches更改为网格视图名称。 …在网格绑定期间
现在的排序
这是ASPX代码:
|
![]() |
20
0
我对此有一个可怕的问题,所以在将数据表分配给视图之前,我最终使用LINQ对其进行排序:
特别是,我发现在对布尔字段进行排序时,dataview.sort和datagrid.sort方法不可靠。 我希望这能帮助别人。 |
![]() |
21
0
|
![]() |
22
0
也许这会对某人有所帮助。不确定是因为2014年,还是我不理解这篇文章试图解决的问题,但这对于slickgrid来说非常简单,如下所示: 问题似乎是如何“记住”当前的排序设置是什么,所以建议是围绕着ASP.NET为您保留该值。但是slickgrid可以告诉您当前的排序顺序是: 要切换排序asc desc,可以使用grid.getSortColumns()来确定当前的列排序。这是我所做的,但我一次只能对1列进行排序,因此我可以安全地执行此操作:“if(grid.getSortColumns()[0].SortAsc)”。 …所以我的代码是这样的:
…像往常一样加载数据,然后加载排序部分:
最后,确保您的站点中包含slickgrid image文件夹,并且当您选择它时,您将在列上显示asc/desc箭头。如果它们丢失,文本将变为斜体,但不会出现箭头。 |
![]() |
23
0
写下这个,它对我有用:
|
![]() |
24
-1
在vb.net中,但非常简单!
|