【问题标题】:Smartgwt: How to get checkbox value on a listgrid?Smartgwt:如何在列表网格上获取复选框值?
【发布时间】:2014-01-12 21:37:29
【问题描述】:

我在 cellClick 上有一个侦听器,我得到了选定的记录,但我找不到方法来了解是否检查了此记录

方法 ListGrid.isSelected(ListGridRecord) 如果选中行,则返回 true,如果选中则不返回

我的代码:

listGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX);
            listGrid.addCellClickHandler(new CellClickHandler() {

                @Override
                public void onCellClick(CellClickEvent event) {

                    if(event.getColNum() == 0 && idMenu != null){
                        boolean isChecked = event.getRecord().???;

                        if(isChecked)
                            ....
                        else
                                                    ....
        }

我也尝试过 event.getRecord().getAttributeAsBoolean("_checkField") 没有成功...

【问题讨论】:

  • Smartgwt 现在对我来说有点远,但如果我不明白,你可以使用listGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX); 说“嘿,我想通过选中一个专用复选框来指明我选择的记录”不是吗?那么为什么想知道您选中的复选框是否被选中?但也许我误解了你的意思....
  • 嗨...谢谢您的回复...因为我也可以取消选中记录,不幸的是监听器对于检查和取消检查事件是相同的,我需要检索正确的检查值来执行任务而不是其他

标签: checkbox smartgwt listgrid ischecked


【解决方案1】:

我找到了一个简单的解决方案...

我的任务是使用 DataSource 中名为“checked”的特殊布尔字段解决的 在 ListGrid 中,我有一个“已选中”字段,并且使用 RecordClickHandler 我可以管理选中或取消选中事件。

数据源代码:

DataSourceBooleanField checkField = new DataSourceBooleanField("checked");

ListGrid 代码:

listGrid.addRecordClickHandler(new RecordClickHandler() {

@Override
public void onRecordClick(RecordClickEvent event) {
                Record rec = event.getRecord();

                boolean checked = rec.getAttributeAsBoolean("checked");

                if(checked){
                  ...   
                }else{
                   ...
                }

                rec.setAttribute("checked", !checked);

                catPgrid.saveAllEdits();
                catPgrid.refreshFields();
            }
        });


        ListGridField checkField = new ListGridField("checked", "Sel");

【讨论】:

    【解决方案2】:

    也许 getSelectedRecords() 方法会对您有所帮助!

    这是一个 API 参考:http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/widgets/grid/ListGrid.html#getSelectedRecords()

    这肯定会提供所有被选中的记录(使用复选框),但应该有一些值可用于唯一标识每条记录!

    【讨论】:

    • 最后我使用了一个向量来保存检查的记录并与新的选择进行比较......使用 getSelectedRecords() 我获得了一个包含所有检查或仅选择的记录的数组,这个解决方案是不赞成的,因为我必须为每次点击做一个 for/while 以了解我的记录是否被选中或未选中...
    猜你喜欢
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多