java - Adornamiento de rejilla de tapiz con entrada y/o enlaces para establecer el número personalizado de filas por página
pagination grid (1)
soy yo otravez :)
Estoy intentando extender el siguiente comportamiento de Tapestry Grid de la siguiente manera.
Por el momento, puedo seleccionar cuántas filas por página quiero mostrar de esta manera:
<t:grid class="t-form-loop"
t:source="myGridDataSource"
t:model="myBeanModel"
t:row="myEntry"
t:encoder="myEncoder"
t:rowsPerPage="20"
t:pagerPosition="both"
t:rowIndex="currentIndex"
t:inplace="true">
Me gustaría que la parte con rowsPerPage
sea dinámicamente modificable, lo que significa que el usuario podría hacer clic en una de las cantidades predefinidas (10,20,50,100) o simplemente ingresar su propia cantidad deseada de filas mostradas por página.
Una manera sucia (y no inteligente de hacer esto) es proporcionar los enlaces / imput para eso y guardarlo en una variable en mi página, por lo que la Grilla podría hacer referencia a esto de esta manera:
t:rowsPerPage="myRowsPerPage"
Sin embargo, supongamos que tengo, por ejemplo, 20-30 páginas. Agregar el mismo código en todos y cada uno de ellos sería inútil y estúpido, así que supongo que querría decorar la grilla existente de alguna manera. Sin embargo, no me gustaría hacer esto globalmente, ya que en algunas páginas me gustaría ofrecer esta funcionalidad y en otras no.
Entonces, dado mi conocimiento limitado de Tapestry, asumiría que tengo 2 opciones:
- Mixin que agregaría la siguiente funcionalidad a las Grid seleccionadas
Extienda el componente Grilla de una manera que tenga los siguientes 2 parámetros:
a.
t:rowsPerPageValues="10,20,50,100"
segundo.t:rowsPerPageInput="true"
Además, me gustaría saber cuántas filas se muestran actualmente.
¿Cuál es el mejor enfoque para este problema y podría obtener algunos consejos / ayuda para implementarlos?
Editar: me gustaría que se vea algo así (sry para HTML malo): http://jsfiddle.net/ZST4E/1/
Creo que deberías crear un nuevo componente que tenga una t:grid
incorporada. Puede encontrar que publishParameters ayudará.
p.ej:
ExtendedGrid.java
public class ExtendedGrid {
@Component(id="grid", publishParameters="source,inplace,etc,etc")
private Grid grid;
@Property
private int rowsPerPage;
}
extendedGrid.tml
<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<t:form zone="gridZone">
<t:select t:id="rowsPerPage" model="[10,20,50,100]" /> <t:submit />
</t:form>
<t:zone t:id="gridZone">
<t:grid t:id="grid" rowsPerPage="prop:rowsPerPage" />
</t:zone>
</t:container>
page.tml
<t:extendedGrid source="mySource" inplace="true" />