0

onClick(ClickEvent event)テーブルを取得しましたが、メソッドでクリックされた行に関する情報が必要です。たとえば、CheckBoxヘッダー行の をクリックすると、他のすべてのCheckBoxes が自動的にチェックされます (「すべて選択」など)。他の をクリックした後CheckBox、適切な行の ID を取得したいと思います。どうすればいいですか?

スクリーンショット

解決しました。

CheckBox selectCb = new CheckBox();
selectCb.addClickHandler(this);
selectCb.getElement().setId(CheckBoxIds.SELECT_ALL);

@Override
public void onClick(ClickEvent event) {
    // OK, an "instanceof Widget" would intercept the if condition below
    if (event.getSource() instanceof CheckBox) {
        CheckBox checkBox = (CheckBox) event.getSource();
        String elementId = checkBox.getElement().getId();
        if (elementId.equals(CheckBoxIds.SELECT_ALL)) {
            boolean checked = checkBox.getValue();
            LOGGER.info("Checked: " + checked);
        }
    }
}

#1を編集します。

ClickHandlerヘッダー チェック ボックス、その他のチェック ボックス、ボタンなどのさまざまなs。

/**
 * The {@link ClickHandler} for the header row
 */
private ClickHandler mHeaderCbClickHandler = new ClickHandler() {

    @Override
    public void onClick(ClickEvent event) {
        CheckBox checkBox = (CheckBox) event.getSource();
        boolean checked = checkBox.getValue();
        for (int row = NO_DATA_HEADER_ROWS_COUNT; row < mFlexTable.getRowCount(); row++) {
            CheckBox dataCb = (CheckBox) mFlexTable.getWidget(row, MockDataProvider.CHECK_COLUMN_INDEX);
            dataCb.setValue(checked);
        }
    }
};

/**
 * The {@link ClickHandler} for a row with data
 */
private ClickHandler mRowCbClickHandler = new ClickHandler() {

    @Override
    public void onClick(ClickEvent event) {

    }
};

/**
 * The {@link ClickHandler} for {@link Button}s
 */
private ClickHandler mButtonClickHandler = new ClickHandler() {

    @Override
    public void onClick(ClickEvent event) {
        // TODO Auto-generated method stub

    }
};

// Use
CheckBox selectCb = new CheckBox();
selectCb.addClickHandler(mHeaderCbClickHandler);
// selectCb.getElement().setId(CheckBoxIds.SELECT_ALL); Not necessary now
4

0 に答える 0