2011-04-18 32 views
7

tengo esta consulta:Fila numeración con p: 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 

La parte @rownum:[email protected]+1 de la consulta MySQL para la numeración de resultado como Primefaces actualmente no tiene una facilidad para mostrar una columna de numeración.

¿Hay alguna forma de mostrar la numeración de las columnas de Primefaces sin tener que hacer @rownum:[email protected]+1?

En caso negativo, ¿puedo construir la consulta anterior utilizando únicamente el método CriteriaBuilder?

Respuesta

38

No estoy seguro de si quiere una "columna de numeración" o "numeración de columna". Supongo que el primero ;-)

¿No puedes usar rowIndexVar? El documento de Primefaces dice:

rowIndexVar = Nombre de la variable que hace referencia al rowIndex que se está procesando.

Esto funciona para mí:

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

El 1 sirve para empezar con el número 1.

ACTUALIZACIÓN:

Este código produce:

enter image description here

+0

No, quiero una columna de numeración, como la primera fila es 1, la segunda fila es 2 y así sucesivamente. Déjame probar tu ejemplo anterior. – ChuongPham

+0

@ user463053 Imagen añadida de la salida html. ¿Es esto lo que estás intentando? –

+2

Tu solución funciona. Gracias montón. ¡Ahora sé para qué se usa rowIndexVar! ;) Una cosa más que hacer: solo tengo que convertir el 'SUBSTRING_INDEX' a algo más simplificado para poder usar el método de CriteriaBuilder, porque no pude ver en los ejemplos de JEE 6 Tutorial cómo se puede definir una cadena SQL SELECT personalizada. para el método CriteriaBuilder. – ChuongPham

Cuestiones relacionadas