避免在rich的某些列中使用onRowClick事件:dataTable

时间:2016-04-08 12:47:25

标签: javascript jsf richfaces onrowclick

我有rich:dataTable,其中包含4列。

第一个是selectBooleanCheckBox,它会触发一个名为" CheckEvent"的事件。 (仅用于示例)进入bean。

同时,dataTable还支持onRowClick事件,该事件触发" onRowClick"在豆上。

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

我试图在其他三个oOnRowClick内定义rich:columns事件,但我这样做的结果是什么;该事件甚至不会触发,因此数据表没有onRowClick

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

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

1 个答案:

答案 0 :(得分:1)

我可以看到这一点 <h:selectBooleanCheckbox onclick="event.stopPropagation()" … /> 通过selectBooleanCheckbox解决QA的问题非常有效。

如果不应该对onclick事件做出反应的Column包含一个可点击的Icon,它应该执行不同的功能,那会有类似的工作吗?请参阅以下示例:

<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>