【发布时间】:2016-08-22 14:15:14
【问题描述】:
我有一个网格,用户可以通过每条记录前面的复选框选择记录。现在我需要根据选择对记录进行排序,以便所有选择的记录都应该放在最前面,然后是未选择的记录。
是否有任何标准功能可以实现这一点?作为替代方案,我考虑将选择状态保存为每条记录的属性并根据属性进行排序。
列的代码是:
gridRealmDt.setSelectionType(SelectionStyle.SIMPLE);
gridRealmDt.setSelectionAppearance(SelectionAppearance.CHECKBOX);
我尝试描述我使用的代码,因为受影响的代码深深嵌套在我们自己的框架类中。
gridRealmDt 是 smartgwt ListGrid 的子类。在我的对话框中,创建一个网格实例,该实例创建一个数据库绑定数据源的实例。加载对话框时,会从数据库中获取记录,然后注册一个 dataArrivedHandler,在其中我选择与另一个表中的记录匹配的记录。
我尝试将选择属性放在一个额外的字段中,并将其用于我的其他排序条件之前的排序,但这不起作用。这是我正在使用的字段的代码。
ListGridField txtSelected = new ListGridField(SELECTED, "");
txtSelected.setHidden(true);
txtSelected.setSortByDisplayField(true);
txtSelected.setCanSortClientOnly(true);
当我没有设置 canSortClientOnly 属性时,order by 会发送到我的数据库中,从而导致错误,因为表不包含该字段,所以我设置了该属性。现在我收到以下错误
从排序说明符数组中删除字段,因为它指定 canSort 仅限客户端:true 并且所有数据还不是客户端。
我还尝试在 Name 字段上使用 sortNormilizer,这是我的主要排序标准,但在将选择值设置为记录之前调用了规范化器。
record.setAttribute(CARealmDS.SELECTED,selected ? "a" : "b");
我也找不到在选择更改时调用规范器的方法。
目前我们使用的是 Smart GWT 版本 6.0p。
【问题讨论】:
-
请提供网格的示例代码以及如何生成复选框字段。此外,Smartgwt 版本有助于查看您可以访问哪些 api。
标签: sorting gwt grid selection smartgwt