如何计算p:dataTable Primefaces中的行数?

时间:2015-07-03 01:50:46

标签: jsf primefaces

我是Primefaces的新手。

我正在使用Primefaces 5.1和jsf 2.2开发一个项目。

我不知道如何计算p:dataTable中的行数?

我需要根据行数设置饼图。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

您需要做的是将widgetVar设置为p:datatable

<p:dataTable value="#{tableBean.myTable}" widgetVar="myTable">...</p:dataTable>

然后您可以使用它从Javascript轻松访问您的表

计算表格中的行数

PF('myTable').tbody[0].children.length

或者如果您使用的是分页器

PF('myTable').cfg.paginator.rowCount

答案 1 :(得分:0)

如果number of rows表示从支持bean返回到我的视图的数据集数量,那么您应该通过添加另一个getter来计算支持bean中的行数

public int getNumberOfRows() {
  return this.myDataTableList.size();
}

如果您的意思是number of rows,我p:datatable中当前可以看到多少数据并且您使用了paginator,那么答案与您选择初始化您的数字相同数据表(最后一页可能除外)。

如果要访问客户端的行数,则必须使用以下内容:

$("#YOUR_DATATABLE_ID").find(".ui-datatable-tablewrapper").find(".ui-datatable-data").find(".ui-widget-content").length

但这只会显示当前可见的行(如果您使用的是分页符)。如果您想获取所有行并使其更容易,请在支持bean中访问行数,如上所示。

答案 2 :(得分:0)

要获取数据表的行数,只需使用&#34; size()&#34;内置Java方法

<p:dataTable value="#{tableBean.myTable}">...</p:dataTable>

<h:outputText value="#{tableBean.myTable.size()}"/>

答案 3 :(得分:0)

如果任何人仍然需要此功能仅用于显示目的。 从版本5开始,在分页器模板中具有所谓的{CurrentPageReport}元素。它允许通过定制。在Primefaces文档中搜索“ currentPageReportTemplate”,它有点隐藏:) Primefaces 5.1 Docu

使用{totalRecords},您可以输出表中的记录数。它也适用于有源滤波器。这是一个示例:

<p:dataTable var="entry" value="#{mbvHandler.entries}"
      widgetVar="carsTable" id="carsTable"
      scrollable="true" scrollWidth="100%"
      filteredValue="#{mbvHandler.filteredEntries}"
      rows="25" paginator="true" resizableColumns="true"
      paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} {Exporters}"
      currentPageReportTemplate="{currentPage} of {totalPages} ({totalRecords})"
      rowsPerPageTemplate="10,15,25,50">