JavaScript中的数据表行id

时间:2013-08-08 08:54:25

标签: javascript jquery jsf primefaces datatables

我想获取datatables行的id,以便在同一个表格单元格中的隐藏按钮上调用click()。 它是这样做的,因为所有按钮必须看起来像h:commandButton并且我不能强制p:commandButton看起来像它们。并且h:commandbutton没有完成事件。我知道我可以使用DataModel,但还有另一种方法(使用JS,JQuery)吗? 当我把hardoced id(p:table:4:hiddenButton)一切都还可以,但是如何获得每个单元格的行号?

<h:form id="p">
 <h:dataTable value="#{bean.paymentList}" var="pmt" id="table" >
   ...
    <h:column>
    <f:facet name="header">
      <h:outputText value="#{bundle.action}" />
     </f:facet>
     <h:commandButton  type="button" value="#{bundle.approve}" 
            onclick="document.getElementById('p:table:??:hiddenButton').click();" />
      <p:commandButton  id="hiddenButton" value="hidden" style="display: none;"
       oncomplete="if (#{pmt.errorsNum} > 0) {
       return confErrDial.show();
       } else {
       return confDial.show();};">
      <f:setPropertyActionListener value="#{pmt.id}" target="#{bean.holder}" />
      </p:commandButton>
     </h:column>
 </h:dataTable>
</h:form>

编辑:

好吧,我使用JQuery做了一些技巧,它可能不太好但是有效。

我做了什么: 我在h:commandButton中添加了id,在onclick事件中我得到了h:commandButton的id,并用隐藏的p:commandbutton的id替换了它的id,所以它的代码现在是:

<h:commandButton id="button" type="button" value="#{bundle.approve}" 
onclick="document.getElementById(($(this).attr('id')).replace('button','hiddenButton')).click();"

仍然有人知道更好的解决方案。

PS:很奇怪因为$(this).parent()。attr(&#39; id&#39;)为空。我认为它有一些东西,没有用id p创建元素:table:0 p:table:1 etc ...

0 个答案:

没有答案