Избегайте события 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>