Вопрос

Я создал простое решение для расширяемых столбцов/строк с помощью rich:datatable и rich:column, которое похоже на: Лучший способ создать расширяемую/сворачиваемую подтаблицу с помощью rich:dataTable

Код фасетов (упрощенный) выглядит следующим образом:

<rich:dataTable id="detailtable"
    value="#{bean.model}"
    var="row"
    columns="2">
    <rich:column id="detail-check">
        <f:facet name="header">
            <h:selectBooleanCheckbox value="#{bean.expandAll}">
                <a4j:support event="onchange" action="#{bean.expandAllAction}"
                    reRender="detailtable" />
            </h:selectBooleanCheckbox>
        </f:facet>
        <h:selectBooleanCheckbox value="#{row.expanded}">
            <a4j:support event="onchange" reRender="detailtable" />
        </h:selectBooleanCheckbox>
    </rich:column>
    <!-- actual data column -->
    <rich:column id="detail-column"
        rendered="#{row.expanded}"
        breakBefore="true"
        colspan="2">
        <!-- detail column content -->
    </rich:column>
</rich:dataTable>

Это предоставляет таблицу с расширенным столбцом. Когда вы щелкаете поле сведений, столбец сведений отображается под фактической строкой.expandAllAction для резервного компонента просто перебирает строки и устанавливает их расширенный атрибут таким же, как и в резервном компоненте, тем самым расширяя/сворачивая все строки.

Однако это не работает корректно с Internet Explorer (IE7 или IE8), хотя работает с FF и Chrome.Если пользователь нажимает на флажок, ничего не отображается, пока он не нажмет на любое другое место на странице.Резервный компонент и объекты обновляются, но повторная визуализация не выполняется до тех пор, пока не будет выполнен щелчок по какому-либо другому элементу.

Это снова что-то нехорошее с IE или просто ошибка с Richfaces?Я обнаружил аналогичную проблему с IE и tbody, но ее следовало исправить.Я могу отправить отчет об ошибке, но есть ли какой-нибудь простой обходной путь?

Версия Richfaces — 3.3.1, она работает на Jboss 4.2.1GA и в комплекте с Sun RI.

Это было полезно?

Решение

Попробуйте использовать другое событие, например onclick
Из документа выберитеBooleanCheckBox: onchange является «Код Javascript выполняется, когда этот элемент теряет фокус и его значение было изменено с момента получения фокуса». и onclick является «Код Javascript выполняется при нажатии кнопки указателя на этот элемент».

Вчера был аналогичный вопрос.Один комментарий BalusC может подтвердить мое предположение. «в случае радио/флажков событие изменения в некоторых браузерах запускается только в том случае, если вы нажмете 2 раза»

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top