1

我有一个带有 CheckboxCell 的 CellTable。

我已向其中添加了以下处理程序:

private static Column<AIDataRecord, Boolean> m_checkColumn = 
    new Column<AIDataRecord, Boolean>(new CheckboxCell(true, false)) 
    {
        @Override
        public Boolean getValue(AIDataRecord object) 
        {
            // Get the value from the selection model.
            return object.isSelected();
        }   
        @Override
        public void onBrowserEvent(Context context, Element elem, AIDataRecord object, NativeEvent event) 
        {
            System.out.println("Browser Event Called");
            super.onBrowserEvent(context, elem, object, event); 
            String eventType = event.getType();
            if ("change".equals(eventType)) 
            {
                System.out.println("Value changed");
                object.toggleSelection();
                System.out.println("Nw : "+object.isSelected());
            }
        }
    };

whereobject.toggleSelection() 是一种反转布尔字段的方法,即 true 到 false 和 false 到 true。

我正在使用此代码查找是否选中了任何复选框来识别任何行。

这件事在除 IE 8 之外的所有主要浏览器中都运行良好。

在 IE 8 中,我得到 object.isSelected() true 但是当我单击该面板上的按钮删除行时,它显示同一行的 isSelected() false。

任何机构都可以帮我解决我应该在哪里找到问题吗?为什么 IE 的行为不同?

任何 Java/GWT 专家都可以帮助我吗...

谢谢。

4

1 回答 1

0

为什么不将 FieldUpdater 分配给您的列?它要简单得多。例如:

m_checkColumn.setFieldUpdater(

    new FieldUpdater<AIDataRecord, Boolean>() {
         @Override
         public void update(int index, AIDataRecord object, Boolean value) {
            object.toggleSelection();
            Window.alert("Nw : " + object.isSelected());
         }
    }

);
于 2012-10-11T21:11:22.640 回答