GWT(smartgwt)网格排序选择记录顶部

时间:2016-08-22 14:15:15

标签: sorting gwt grid selection smartgwt

我有一个网格,用户可以通过每个记录前面的复选框选择记录。现在我需要根据记录的选择对记录进行排序,以便所有选定的记录都放在顶部,然后是未选择的记录。

有没有任何标准功能来实现这一目标?作为替代方案,我想到将选择状态保存为每个记录的属性并根据属性进行排序。

该列的代码是:

gridRealmDt.setSelectionType(SelectionStyle.SIMPLE);
gridRealmDt.setSelectionAppearance(SelectionAppearance.CHECKBOX);

我尝试描述我使用的代码,因为受影响的代码深深地嵌套在我们自己的框架类中 gridRealmDt是smartgwt ListGrid的子类。在我的Dialog中,创建一个网格实例,用于创建数据库绑定数据源的实例。加载对话框时,将从数据库中提取记录,然后注册一个dataArrivedHandler,我在其中选择与另一个表中的记录匹配的记录。

我尝试将选择属性放在一个额外的字段中,并在我的其他排序条件之前将其用于sortig,但这不起作用。这是我正在使用的字段的代码。

ListGridField txtSelected = new ListGridField(SELECTED, "");
txtSelected.setHidden(true);
txtSelected.setSortByDisplayField(true);
txtSelected.setCanSortClientOnly(true);

当我没有设置canSortClientOnly属性时,order by被发送到我的数据库导致错误,因为该表不包含该字段,所以我设置了该属性。现在我得到以下错误

从sort Specifier数组中删除字段,因为它指定canSort Client Only:true且所有数据都不是客户端。

我还尝试在Name字段上使用sortNormilizer,这是我的主要排序条件,但是在将选择值设置为记录之前调用normalizer。

record.setAttribute(CARealmDS.SELECTED,selected ? "a" : "b");

当选择更改时,我也找不到调用normalizer的方法。

目前我们正在使用Smart GWT版本6.0p。

1 个答案:

答案 0 :(得分:0)

我认为没有任何标准功能。只需使用网格商店更新。首先放置选中的项目。