2

我有一个rich:dataTable包含 4 列的内容。

第一个是 a selectBooleanCheckBox,它在 bean 中触发一个名为“CheckEvent”(仅用于示例)的事件。

同时,dataTable 还支持onRowClick在 bean 上触发“onRowClick”的事件。

我面临的问题是,当我单击第一列(复选列)时,onRowClick也会触发。在这种情况下,这肯定是一个问题:如果选中了某行而我只想取消选择它,则onRowClick突出显示该行,这是我不想要的行为。

我试图oOnRowClick在其他三个中定义事件rich:columns,但我以这种方式实现的目标是什么;该事件甚至不会触发,因此数据表没有onRowClick

尝试通过 bean 进行逻辑也不起作用,因为我不知道当我输入onRowClick()方法时会推送哪一列。

我真的很绝望。任何帮助将不胜感激。

4

2 回答 2

6

onrowclickonclick在表格行上添加,如果您不希望它触发,则必须防止复选框上的单击事件冒泡到该行,例如:

<h:selectBooleanCheckbox onclick="event.stopPropagation()" … />
于 2016-04-08T13:52:51.710 回答
1

我可以看到这 <h:selectBooleanCheckbox onclick="event.stopPropagation()" … /> 非常适合解决 QA 的问题selectBooleanCheckbox

如果不应该对 onclick 事件做出反应的 Column 包含一个应该执行不同功能的可点击图标,类似的工作是否会起作用?请参见下面的示例:

<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>
于 2018-04-24T14:38:28.470 回答