【问题标题】:Row numbering with p:dataTable使用 p:dataTable 进行行编号
【发布时间】:2011-08-07 14:20:24
【问题描述】:

我有这个问题:

SELECT @rownum:=@rownum+1 'no', m.title, m.author, REPLACE(SUBSTRING_INDEX(m.content, ' ', 20), '<br>', ' '), m.viewed, m.hashid FROM book m, (SELECT @rownum:=0) r WHERE m.lang = ?1 AND m.title like CONCAT('%',?2,'%') ORDER BY m.title asc

MySQL 查询的@rownum:=@rownum+1 部分作为 Primefaces 的结果编号目前没有显示编号列的功能。

有没有办法不用@rownum:=@rownum+1就可以显示Primefaces的列编号?

如果没有,我可以纯粹使用 CriteriaBuilder 方法构造上述查询吗?

【问题讨论】:

    标签: mysql jsf-2 jpa-2.0 primefaces


    【解决方案1】:

    我不太确定您想要“编号列”还是“列编号”。我假设第一个;-)

    你不能用rowIndexVar吗? Primefaces 文档说:

    rowIndexVar = 引用的变量名 正在处理 rowIndex。

    这对我有用:

    <p:dataTable value="#{testBean.selectOptions}" rowIndexVar="rowIndex" var="item">
        <p:column headerText="#">
            #{rowIndex+1}
        </p:column>
        <p:column headerText="Option">
            #{item}
        </p:column>
    </p:dataTable>
    

    +1 表示从数字 1 开始。

    更新:

    这段代码产生:

    【讨论】:

    • 不,我想要一个编号列,例如第一行是 1,第二行是 2,依此类推。让我试试上面的例子。
    • @user463053 添加了 html 输出的图像。这是你正在尝试的吗?
    • 您的解决方案有效。谢谢堆。现在我知道 rowIndexVar 的用途了! ;) 还有一件事要做:我只需要将 SUBSTRING_INDEX 转换为更简化的东西,这样我就可以使用 CriteriaBuilder 方法 - 因为我无法从 JEE 6 教程示例中看到如何定义自定义 SQL SELECT 字符串用于 CriteriaBuilder 方法。
    • @user463053 我建议就这个主题开始另一个问题。我不使用 CriteriaQuery API(在我看来有点过于复杂)。我改用 JPQL 查询。
    • 是的,我将为此开始另一篇文章。我同意你的观点,即使是最简单的 SQL 查询,它也有点过于复杂和太多样板!
    猜你喜欢
    • 2014-12-08
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多