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());
            }
        }
    };

ここobject.toggleSelection() で、はブールフィールドを反転するメソッドです。つまり、trueからfalseに、falseからtrueになります。

私はこのコードを使用して、チェックボックスが選択されているかどうかを確認し、行を識別していません。

これは、IE8を除くすべての主要なブラウザーで完全に正常に機能しています。

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 に答える