Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gwt celltable对列调用排序_Gwt_Sorting_Celltable - Fatal编程技术网

Gwt celltable对列调用排序

Gwt celltable对列调用排序,gwt,sorting,celltable,Gwt,Sorting,Celltable,我有一张Gwt手机桌。单击标题可以正确地对列进行排序。 但在页面加载时,默认情况下列不排序。 我想在页面加载时对最右边的列进行排序。我建议您检索要显示的已排序数据。如果是这种情况,则只需设置正确的排序图标(升序或降序): 如果在检索之前无法对数据进行排序,则可以按照用户单击标题时的相同方式对列表进行排序(OnColumnSortEvent事件),使用比较器在显示之前进行排序。您可以使用getColumnSortList()并按下要排序的列,如下所示: dataGrid.getColumnSort

我有一张Gwt手机桌。单击标题可以正确地对列进行排序。 但在页面加载时,默认情况下列不排序。
我想在页面加载时对最右边的列进行排序。

我建议您检索要显示的已排序数据。如果是这种情况,则只需设置正确的排序图标(升序或降序):


如果在检索之前无法对数据进行排序,则可以按照用户单击标题时的相同方式对列表进行排序(
OnColumnSortEvent事件)
,使用
比较器在显示之前进行排序。

您可以使用getColumnSortList()并按下要排序的列,如下所示:

dataGrid.getColumnSortList().push(columnToSortBy);
ColumnSortEvent.fire(myTable, myTable.getColumnSortList());
该表将按给定列按升序排序

调用此方法两次,将触发检查以测试给定列是否已被推送到列表中,如果已推送到列表中,则将按降序排序,因此要按列降序排序表,请使用:

dataGrid.getColumnSortList().push(columnToSortBy);
dataGrid.getColumnSortList().push(columnToSortBy);
在场景后面,该列被推送到表中名为ColumnSortList的内部列表中的位置0。每次单击列标题时都会更新相同的列表


确保在初始化列后调用此方法。

要澄清几个现有答案。。。
cellTable
的排序列表(由
getColumnSortList()
函数访问)仅确定表头的状态,而不实际排序任何数据

正如@z00bs所建议的,如果可能,最好从外部对数据进行排序。如果您知道将对数据进行预排序,则应使用
getColumnSortList().clear()
getColumnSortList().push()
函数向用户传达数据的排序方式

但是,如果希望CellTable对数据进行实际排序,则需要触发一个事件,强制CellTable在客户端对组成数据进行实际排序。为此,可以使用state
ColumnSortEvent.fire()
方法,如下所示:

dataGrid.getColumnSortList().push(columnToSortBy);
ColumnSortEvent.fire(myTable, myTable.getColumnSortList());

这将触发一个事件,该事件根据标头的当前状态处理数据排序。因此,您可以先设置标题所需的初始排序状态,然后执行这一行,以实际使数据排序反映标题中表示的当前排序状态。

我在一行中调用push()两次,如图所示,但是,尽管箭头将其显示为已排序两次,但实际数据不是。我想不出为什么会发生这种情况。我遇到了这个问题,只是将解决方案作为备选答案发布。杰夫·艾伦触发事件的解决方案就是这个答案中缺少的。这有助于确保在使用杰夫·艾伦的解决方案时,默认排序不会在升序和降序之间循环。我使用这个答案来帮助解决这个问题在列上应用某些筛选器后重新排序列。谢谢哦,哦,哦,我想我快疯了,谢谢:)快到2020年了,这个解决方案仍然可以完美地工作:-)