2011-04-18 45 views
7

我有这个疑问:行与对编号:dataTable的

SELECT @rownum:[email protected]+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的查询结果编号第Primefaces的@rownum:[email protected]+1部分目前没有一个设施,以显示一个编号列。

有没有办法显示Primefaces列编号而不必做@rownum:[email protected]+1

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

回答

38

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

难道你不能使用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开始

UPDATE:

此代码生成:

enter image description here

+0

不,我想要一个像第一行的编号列是1,第二行是2等等。让我试试你的例子。 – ChuongPham 2011-04-18 14:22:19

+0

@ user463053添加了html输出的图像。这是你正在尝试的吗? – 2011-04-18 14:29:15

+2

您的解决方案有效。谢谢你。现在我知道rowIndexVar用于什么了! ;)还有一件事要做:我只需要将'SUBSTRING_INDEX'转换为更简化的东西,这样我就可以使用CriteriaBuilder方法 - 因为我无法从JEE 6教程示例中看到如何定义自定义SQL SELECT字符串为CriteriaBuilder方法。 – ChuongPham 2011-04-18 14:38:07