Избегайте события onRowClick в определенном столбце rich:dataTable

У меня есть rich:dataTable который содержит 4 столбца.

Первый из них selectBooleanCheckBox, который запускает событие "CheckEvent" (только для примера) в bean-компонент.

Между тем, dataTable также поддерживает onRowClick событие, которое запускает "onRowClick" на bean-компоненте.

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я нажимаю на первый столбец (флажок один), onRowClick также пожары. Это, безусловно, проблема в этой ситуации: если в строке выбрана проверка, и я просто хочу отменить ее выбор, onRowClick выдвигает на первый план ряд, поведение, которое я не хочу.

Я пытался определить oOnRowClick событие внутри трех других rich:columnsно то, чего я добиваюсь таким образом, - ничто; что событие даже не срабатывает, поэтому нет onRowClick для данных.

Попытка сделать логику с помощью bean-компонента также не работает, так как я не знаю, какой столбец выдвигается при входе в onRowClick() метод.

Я действительно отчаянно об этом. Любая помощь будет любезно оценена.

2 ответа

Решение

onrowclick добавляет onclick в строке таблицы, если вы не хотите, чтобы она запускалась, вы должны предотвратить всплытие события click в флажке, например:

<h:selectBooleanCheckbox onclick="event.stopPropagation()" … />

Я вижу, что это <h:selectBooleanCheckbox onclick="event.stopPropagation()" … />отлично работает для решения проблемы QA с selectBooleanCheckbox,

Будет ли что-то похожее работать, если столбец, который не должен реагировать на событие onclick, содержит кликабельный значок, который должен выполнять другую функцию? Смотрите пример ниже:

<rich:panel headerClass="panelHeader" styleClass="panel">
    <f:facet name="header">Header</f:facet>
    <rich:dataTable id="myTable" value="#{myModel}" var="k">

        <a4j:support event="onRowClick" action="#{myAction.selectItem(k, facesContext.viewRoot.viewId)}"
                            reRender="myTable"/>

            <rich:column>
                <f:facet name="header">
                        <h:outputText value="Normal Column - should be clickable"/>
                </f:facet>
                <h:outputText value="#{k.name}"/>
            </rich:column>

            <rich:column >
                <f:facet name="header">
                    <h:outputText value="Only Click on Icon should react to Mouseclick"/>
                </f:facet>
                <s:graphicImage value="/img/bin_closed.gif">
                    <a4j:support event="onclick"
                                 action="#{myAction.deleteItem(k)}"
                                 reRender="myTable"
                                 ajaxSingle="true" limitToList="true"
                                 onsubmit="if(!confirm('Really?')) { return false; }" />/>
                </s:graphicImage>
            </rich:column>

    </rich:dataTable>

</rich:panel>
Другие вопросы по тегам