Обработка onClick для флажка в заголовке CellTable
Вопрос
Я пытаюсь создать CellTable, в котором есть столбец с некоторым текстом и флажок, который будет использоваться в качестве флажка «Выбрать все» (см. рисунок ниже, флажок «cb»).В настоящее время я использую класс, производный от Header, и переопределяю его метод рендеринга для вывода текста и флажка.Я переопределяю onBrowserEvent (), однако он дает мне только события onChange, которые будут работать нормально, за исключением того, что флажок не работает правильно.Есть ли у кого-нибудь идеи по этому поводу?
родовое словоПроблема, с которой я сталкиваюсь с флажком, заключается в том, что, когда он не установлен, вам нужно дважды щелкнуть его, чтобы появилась галочка (по крайней мере, в Chrome), даже если свойство "checked" истинно в первый раз.Одно нажатие снимает галочку правильно.
Вот код:
Настройте столбцы CellTable:
родовое словоМой заголовок "Выбрать все":
родовое словоРешение
Похоже, вы визуализируете неотмеченный флажок всякий раз, когда вы визуализируете заголовок, что может стирать состояние выбора всякий раз, когда таблица ячеек повторно визуализируется.
Попробуйте сохранить отмеченное состояние и отобразить флажок с этим состоянием. Похоже, вы уже на полпути с allSelected
, просто не используете его.
EDIT Вот рабочая реализация, которую я только что написал для Занаты (см. SearchResultsView.java ). Интерфейс HasValue реализован таким образом, что события изменения значения могут обрабатываться стандартным способом. Я не переопределял метод рендеринга, если вы хотите это сделать, убедитесь, что вы используете getValue()
, чтобы определить, рендеринг ли вы отмечен или снят флажок. Логика выбора / отмены выбора обрабатывается в связанном классе презентатора (см. SearchResultsPresenter.java ).