Esto ayudará para crear nuestro propio bloque de texto. Ahora que sabemos como agregar un bloque de texto, sólo nos falta saber el lugar donde se está "dibujando" la grilla en el template, para que podamos agregarle una línea debajo de la misma e incluir nuestro bloque de texto en la nueva línea.
Si miramos la línea 350 del template encontraremos algo como esto:
<%= HtmlToKmw.OpenTag("TR") %> // nueva línea
<%= HtmlToKmw.BeginTableCell("", 2) %> //nueva celda
Qué son esos parámetros ? Miremos la documentación...
Bien, ahora sabemos que podemos setear la alineación y también la propiedad colspan de la nueva celda.
Miremos la línea 352...
<%= HtmlToKmw.BeginGrid(...) //la grilla está siendo agregada!
// código para agregar la información de la grilla
De nuevo, miremos la línea 391...
<%= HtmlToKmw.EndGrid() %> //fin de la grilla
<%= HtmlToKmw.CloseTag("TD") %> //cierra la celda
<%= HtmlToKmw.CloseTag("TR") %> //cierra la fila
Todo para indicar que aquí podríamos agregar una nueva fila ya que la misma estará justo debajo de la grilla, eso es lo que necesitamos.
Entonces, probemos agregar una nueva fila para nuestro textblock. Para esto, necesitamos agregar las siguientes líneas al archivo GridTemplate.dkt.
<%= HtmlToKmw.OpenTag("TR") %> // nueva línea
<%= HtmlToKmw.BeginTableCell("center", 2) %> // queremos que la información esté centrada y colspan = 2, lo mismo que usa la grilla
<%= HtmlToKmw.TextBlock("PageCountInformation", "PageCountInformation" , GlobalWorkWithConfig.Config.Theme("Subtitle")) %> // NUESTRO TEXTBLOCK
<%= HtmlToKmw.CloseTag("TD") %>
<%= HtmlToKmw.CloseTag("TR") %>
Bien! Nuestro textblock se ve perfecto! pero aún no muestra la información que necesitamos. Dado que dicha información se obtiene en tiempo de ejecución, necesitamos agregar el código correspondiente a un evento o sub-rutina. En otras palabras, necesitamos encontrar un evento o ub-rutina para agregar algó así: TextBlock.Caption = "Page " + &CurrentPage + " of " + str(gridName.PageCount)
Notas:
a) &CurrentPage ya está definida en el dkt porque la misma se usa para la paginación.
// Variables for paging.
...
vars.AddCommon("CurrentPage", "Current Page", DataType.Numeric, 4, 0); //ahora también sabemos como agregar una variable!!!
b) sólo necesitamos saber cómo referenciar a la grilla correspondiente para poder usar su método PageCount.
Para esto, veamos los eventos y sub-rutinas generadas en el web panel Work With. Como podemos observar, hay un evento Start, Refresh y sub-rutinas para manejar las distintas funcionalidades del web panel y de sus componentes. Si miramos particularmente el evento Refresh observaremos que en el mismo se llama a la sub-rutina 'FixCurrentPage', esta sub-rutina usa la variable &CurrentPage y también el método Grid1.PageCount, todo parece indicar que aquí sería el lugar indicado para agregar nuestra asignación.
Ya casi finalizamos, volvamos a nuestro archivo GridTemplate.dkt para buscar la sub-rutina 'FixCurrentPage' y de esa forma agregar nuestro código al final de la misma.
Comienza en la línea 611...
Sub 'FixCurrentPage'
If <%= gridName %>.PageCount = 0
&CurrentPage = 0
Else
If &CurrentPage > <%= gridName %>.PageCount
&CurrentPage = <%= gridName %>.PageCount
Else
If &CurrentPage < 1
&CurrentPage = 1
EndIf
EndIf
EndIf
PageCountInformation.Caption = "Page " + &CurrentPage.ToString() + " of " + str(<%= gridName %>.PageCount) //nuestra asignación
EndSub
Vamos a re-aplicar el pattern para ver si funciona....
Eso es todo. Ahora estamos mostrando Page 1 of 3 justo debajo de la grilla!!!
Cosmética : Vamos a agregar nuestro textblock dentro de una nueva tabla, para de esa forma poder asignarle una clase del tema que estamos usando y darle un mejor look and feel.
<%-- PageCount Information --%>
<%= HtmlToKmw.OpenTag("TR") %>
<%= HtmlToKmw.BeginTableCell("", 2) %>
<%= HtmlToKmw.BeginTable("TablePageCount", "TableBottom", 0, 0, "none", 0) %>
<%= HtmlToKmw.OpenTag("TR") %>
<%= HtmlToKmw.BeginTableCell("center", 2) %>
<%= HtmlToKmw.TextBlock("PageCountInformation", "PageCountInformation" , GlobalWorkWithConfig.Config.Theme("Subtitle")) %>
<%= HtmlToKmw.CloseTag("TD") %>
<%= HtmlToKmw.CloseTag("TR") %>
<%= HtmlToKmw.EndTable() %>
<%= HtmlToKmw.CloseTag("TD") %>
<%= HtmlToKmw.CloseTag("TR") %>
Click here to download the modified GridTemplate.dkt file