Foros Néfele 4 Harbour › Foros › Dudas › ejemplo paginado listview que esta en foro no paginate
- Este debate tiene 2 respuestas, 2 mensajes y ha sido actualizado por última vez el 3 años, 8 meses por hugohidalgoc@gmail. This post has been viewed 873 timescom. This post has been viewed 873 times
-
AutorEntradas
-
-
11-04-2021 a las 06:18 #1785hugohidalgoc@gmail.comParticipante
Estimados colaboradores, este ejemplo tomado integramente del foro como ejemplo de paginate del listview, compilado y ejecutado no funciona al paginar
necesito presentar una lista de fotogragias y nombres que se pueda paginar en presentacion de ficha, por eso queria usar este ejemplo
gracias
PROCEDURE Factures()
// Comenzamos instanciando la Página Web que queremos crear
with object TWebPage():New()
// Instanciamos un Panel para que sea el contenedor del formulario, permite poner un titulo y tiene un efecto sombra
With Object WPanel():New(:WO)
// tenemos que tener un contenedor para recibir la respuesta del AJAX
With Object WBevel():New(:WO)
:cId := "pages"
// Cuando cargamos la primera vez montamos la página 1 del listview
FacturesBrowse( 1, :WO )
:Create()
End With:Create()
end with// Y listo, ya tenemos nuestra página creada, como el :Create() de un tWebPage nos retorna todo el HTML de la página
// sobre la marcha hacemos el envio de dicho HTML al navegador que nos ha realizado la conexión
oCgi:SendPage(:Create())
end withRETURN
//------------------------------------------------------------------------------
static FUNCTION FacturesBrowse( nPage, oParent )
LOCAL cHtml
Local n, aItems := {}//Cargamos datos en un Array que se mostraran en el Browse
//Podríamos proveer de datos el Array desde cualquier consulta DBF o MariaDB
AAdd( aItems, { 1, 20001 } )
AAdd( aItems, { 2, 20002 } )
AAdd( aItems, { 3, 20003 } )
AAdd( aItems, { 4, 20004 } )
AAdd( aItems, { 5, 20005 } )DEFAULT nPage TO 1
WITH OBJECT WListView():New(oParent)
:lTitleItem := .T.// Parametros para la Paginación
:nItemInPage := 3//7
:nPage := nPage
:cOnChangePage := "FacturesAjaxChangePage" // Esta es la función a Llamar al cambiar de página
:cAjaxPages := "pages" // Este es el wBevel que contiene el wListView y al que hay que enviar la respuesta del AJAXFor n:=1 To Len(aItems)
WITH OBJECT :AddItem( aItems[n,1],, "Factura: " + ToString(aItems[n,2]) ) AS wItemListView
END With
Next:Create()
// Como tambien lo podemos llamar por AJAX recuperamos todos el código HTML y JS en una cadena
cHtml := :FullHtml()
end withRETURN cHtml
//------------------------------------------------------------------------------
// Esta es el metodo que es llamado por AJAX
PROCEDURE FacturesAjaxChangePage()
// El Listview nos envia en la llamada tres Parametros de su configuración que podemos
// recuperar con oCgi:GetCgiValue
// newpage := Próxima página a mostrar
// cType := tipo de ListView
// lTitleItem := Si se presenta el titulo de las lineas (cuidado devuelve 'true' o 'false')
LOCAL nPagina := Val(oCgi:GetCgiValue("newpage", "1")) // Recuperamos la página a mostrar// Montamos el listview con los parametros recibidos y lo enviamos de respuesta
oCgi:SendPage( FacturesBrowse(nPagina) )RETURN
-
13-04-2021 a las 10:23 #1787XeviParticipante
Lo acabo de probar, ya desde que lo puse en ejemplos ahí se quedó el código...
Copiar-Pegar el código mismo que tienes en el mensaje anterior, y está funcionando perfectamente.Puedes verlo en...
https://xevicomas.duckdns.org/cgi-bin/xcmProves_ListViewPaginacion.exe
Un detalle que debes de tener en cuenta, si no te está funcionando. Debes de tener enrutado la funció encargada de la paginación
1234567// El RUN anterior entra por aquí y llama al Method correspondienteClass TCgi FROM XCgi// Este es nuestro Router para evitar inyección de código malicioso y aportar la máxima seguridad.// Solo se permite la llamada a los Method de oCgi aquí nombrados que a su vez llaman a Procedure, Function o Method'sMETHOD MainFunction() INLINE Factures()METHOD FacturesAjaxChangePage() INLINE FacturesAjaxChangePage()- Esta respuesta fue modificada 3 años, 8 meses por Xevi.
-
13-04-2021 a las 22:24 #1789hugohidalgoc@gmail.comParticipante
Xevi, Buenas tardes, Gracias, tienes razon, me faltaba enrutar facturesajaxchangepage() , todo trabaja muy bien gracias nuevamente
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.