GWT&x2B;DataGrid冻结/解冻行选择

GWT&x2B;DataGrid冻结/解冻行选择,gwt,datagrid,Gwt,Datagrid,因此,我实现了一个SingleSelectionModel,只选择DataGrid中的一行 final SingleSelectionModel<Entity> selectionModel = new SingleSelectionModel<>(keyProvider); final SingleSelectionModel selectionModel=新的SingleSelectionModel(keyProvider); 我已经创建了一个复选框,可以冻结/解

因此,我实现了一个SingleSelectionModel,只选择DataGrid中的一行

final SingleSelectionModel<Entity> selectionModel = new SingleSelectionModel<>(keyProvider);
final SingleSelectionModel selectionModel=新的SingleSelectionModel(keyProvider);
我已经创建了一个复选框,可以冻结/解冻行选择。 换句话说,选中复选框时,必须选择当前行(蓝色突出显示,因为我使用的是SingleSelectionModel),并且选中复选框时,用户不能通过键盘/鼠标选择另一行。该行仍必须保持选中状态

// disable row selection using selection model
    disableSelection.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
        @Override
        public void onValueChange(ValueChangeEvent<Boolean> event) {
            // do stuff, any suggestions guys?
        }
    });
//使用选择模型禁用行选择
disableSelection.addValueChangeHandler(新的ValueChangeHandler(){
@凌驾
ValueChange上的公共作废(ValueChangeEvent事件){
//做点什么,有什么建议吗?
}
});
可能使用NoSelectionModel,或者向现有选择模型添加selectionChangeHandler。 谢谢。

您可以试试:

NoSelectionModel<Entity> noSelectionModel = new NoSelectionModel<Entity();
...
disableSelection.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
    @Override
    public void onValueChange(ValueChangeEvent<Boolean> event) {
        myDataGrid.setSelectionModel(event.getValue() ? noSelectionModel : selectionModel);
    }
});

NoSelectModel NoSelectModel=new NoSelectModel当我使用NoSelectModel时,行选择对用户不可用,这是真的,但在此之前,我必须设置所选行,而不能更改选择,但NoSelectModel完全取消此选择:(有可能吗?您只需向所选行添加一个样式,使其看起来“已选定”-这是DataGrid在单击行时所做的操作。另一种方法是继续使用SingleSelectionModel,但如果设置了标志,则恢复所选内容。我不知道用户是否会注意到它。