避免 rich:dataTable 中某列的 onRowClick 事件
Avoid onRowClick event in certain column of rich:dataTable
我有一个 rich:dataTable
,其中包含 4 列。
第一个是 selectBooleanCheckBox
,它将一个名为 "CheckEvent" 的事件(仅作为示例)触发到 bean 中。
同时,dataTable 还支持 onRowClick
事件,该事件会在 bean 上触发 "onRowClick"。
我面临的问题是,当我单击第一列(检查列)时,onRowClick
也会触发。在这种情况下,这肯定是个问题:如果某行选中了支票,而我只想取消选中它,onRowClick
会突出显示该行,这是我不想要的行为。
我试图在其他三个 rich:columns
中定义 oOnRowClick
事件,但我用这种方法实现的是什么;该事件甚至没有触发,因此数据表没有 onRowClick
。
尝试通过 bean 制作逻辑也不起作用,因为我不知道在输入 onRowClick()
方法时推入了哪一列。
我真的很绝望。如有任何帮助,我们将不胜感激。
onrowclick 在 table 行上添加 onclick
,如果您不希望它触发,则必须防止复选框上的点击事件冒泡到该行,例如:
<h:selectBooleanCheckbox onclick="event.stopPropagation()" … />
我可以看到这个
<h:selectBooleanCheckbox onclick="event.stopPropagation()" … />
使用 selectBooleanCheckbox
.
完美解决 QA 的问题
如果不应对 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>
我有一个 rich:dataTable
,其中包含 4 列。
第一个是 selectBooleanCheckBox
,它将一个名为 "CheckEvent" 的事件(仅作为示例)触发到 bean 中。
同时,dataTable 还支持 onRowClick
事件,该事件会在 bean 上触发 "onRowClick"。
我面临的问题是,当我单击第一列(检查列)时,onRowClick
也会触发。在这种情况下,这肯定是个问题:如果某行选中了支票,而我只想取消选中它,onRowClick
会突出显示该行,这是我不想要的行为。
我试图在其他三个 rich:columns
中定义 oOnRowClick
事件,但我用这种方法实现的是什么;该事件甚至没有触发,因此数据表没有 onRowClick
。
尝试通过 bean 制作逻辑也不起作用,因为我不知道在输入 onRowClick()
方法时推入了哪一列。
我真的很绝望。如有任何帮助,我们将不胜感激。
onrowclick 在 table 行上添加 onclick
,如果您不希望它触发,则必须防止复选框上的点击事件冒泡到该行,例如:
<h:selectBooleanCheckbox onclick="event.stopPropagation()" … />
我可以看到这个
<h:selectBooleanCheckbox onclick="event.stopPropagation()" … />
使用 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>