我有一个网格,用户可以通过每个记录前面的复选框选择记录。现在我需要根据记录的选择对记录进行排序,以便所有选定的记录都放在顶部,然后是未选择的记录。
有没有任何标准功能来实现这一目标?作为替代方案,我想到将选择状态保存为每个记录的属性并根据属性进行排序。
该列的代码是:
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。
答案 0 :(得分:0)
我认为没有任何标准功能。只需使用网格商店更新。首先放置选中的项目。