Buenas noches
Me gustaría saber si alguien tiene un ejemplo de integración den una vista usando tweb ?, claro usando mercury
Ejemplo, desde el menu lanzo route( "clientes"); este route esta definido como GET,POST como un CONTROLLER,
En el controller, mando llamar un modelo, un query de los últimos 100 Clientes ( Usando mysql con WDO ), luego al recibir, quiero enviarlos
a la vista con un GRID.
Ya llegue hasta hacer el query, ahora quiero diseñar un Form, y en el BROWSE usando tweb y dejarlo listo en la vista que reciba los parámetros
recibidos desde el controller.
Ya una vez desde ahi, iniciare a poner botones para agregar registros ( Abrir una ventana modal ), borrar ,exportar etc.
No se si me pude explicarme ?
Saludos
Osvaldo Ramirez
mercury and web
- charly
- Mensajes: 145
- Registered for: 3 years 7 months
Hola Osvaldo,
Muy fácil
Partimos de la base que estas en el controller. En el controller puedes tener un código que conecta con un un modelo de datos y recoje datos. Una vez tengo los datos llamo a la view y le paso esos datos. Podria ser algo asi:
Fijate como invocamos las vista y le pasamos 1 parámetro, en este caso aRows, que seran el contenido de los registros devueltos por el modelo de datos
Luego tengo de crear una vista en este caso que se llama src/view/mybrowse.view y podriamos poner un code parecido a este
Por defecto las views ya se interpretan como codigo html. fijate la 1 linea q es un trozo html puro y duro.
Luego si quieres poner code harbour debe estar entr <?prg y ?>
Dentro del code harbour:
- Insertamos el fichero de cabecera si usamos TWeb -> #include {{ TWebInclude() }}
- Recuperamos parametro enviado desde controller -> local aRows := pvalue(1)
- Finalmente creamos un simple browse sacado de los ejemplos de TWeb
- Finate en la clausula final que hay un return -> END FORM o RETURN , esto es porque dentro <?prg ... ?> siempre ha de acabar devolviendo una cadena. Este comando lo provoca
Muy fácil
Partimos de la base que estas en el controller. En el controller puedes tener un código que conecta con un un modelo de datos y recoje datos. Una vez tengo los datos llamo a la view y le paso esos datos. Podria ser algo asi:
Código: Seleccionar todo
//----------------------------------------------------------------------------//
METHOD Browse( oController ) CLASS MyController
local oModelCustomer := CustomerModel():New()
local aRows := oModelCustomer:GetState( 'NY', 80 )
oController:View( 'MyBrowse.view', aRows )
RETU nil
Luego tengo de crear una vista en este caso que se llama src/view/mybrowse.view y podriamos poner un code parecido a este
Código: Seleccionar todo
<h3>Test View with browse - NY and age > 80</h3><hr>
<?prg
#include {{ TWebInclude() }}
local aRows := pvalue(1)
DEFINE WEB oWeb TITLE 'MyBrowse' TABLES INIT
DEFINE FORM o
INIT FORM o
ROWGROUP o
DEFINE BROWSE oBrw ID 'ringo' SEARCH HEIGHT 400 OF o
ADD oCol TO oBrw ID 'first' HEADER 'First'
ADD oCol TO oBrw ID 'last' HEADER 'Last'
ADD oCol TO oBrw ID 'street' HEADER 'Street'
ADD oCol TO oBrw ID 'state' HEADER 'St'
ADD oCol TO oBrw ID 'age' HEADER 'Age'
INIT BROWSE oBrw DATA aRows
END o
END FORM o RETURN
?>
Luego si quieres poner code harbour debe estar entr <?prg y ?>
Dentro del code harbour:
- Insertamos el fichero de cabecera si usamos TWeb -> #include {{ TWebInclude() }}
- Recuperamos parametro enviado desde controller -> local aRows := pvalue(1)
- Finalmente creamos un simple browse sacado de los ejemplos de TWeb
- Finate en la clausula final que hay un return -> END FORM o RETURN , esto es porque dentro <?prg ... ?> siempre ha de acabar devolviendo una cadena. Este comando lo provoca
Salutacions, saludos, regards.
Charly
"...programar es fácil, hacer programas es difícil..."
https://httpd2.blogspot.com/
https://forum.modharbour.app
Charly
"...programar es fácil, hacer programas es difícil..."
https://httpd2.blogspot.com/
https://forum.modharbour.app
-
- Mensajes: 127
- Registered for: 3 years 6 months
Mi estimado Charly
Como siempre, muchas gracias, y si, si funciono!!!!
Desde ahi parto.
Mi idea es que de entrada muetre unos pocos registros y que el usuario busque lo que quiera.
Ya dependera del cliente.
Voy a ver el código fuente del browse para ver que mas botones hay y ver si puedo agregar mas.
Saludos
Osvaldo Ramirez
Como siempre, muchas gracias, y si, si funciono!!!!
Desde ahi parto.
Mi idea es que de entrada muetre unos pocos registros y que el usuario busque lo que quiera.
Ya dependera del cliente.
Voy a ver el código fuente del browse para ver que mas botones hay y ver si puedo agregar mas.
Saludos
Osvaldo Ramirez
-
- Mensajes: 127
- Registered for: 3 years 6 months
Mi estimado Charly, de nueva cuenta:
Hablando del browse:
Hay alguna forma de poner botones propios, como boton agregar, borrar, etc, pero al mismo nivel o altura
de los botones de tools, print, export ?
Gracias de antemano.
Saludos
Osvaldo Ramirez
Hablando del browse:
Hay alguna forma de poner botones propios, como boton agregar, borrar, etc, pero al mismo nivel o altura
de los botones de tools, print, export ?
Gracias de antemano.
Saludos
Osvaldo Ramirez
- charly
- Mensajes: 145
- Registered for: 3 years 7 months
Osvaldo,
TWeb usa bootstrap-table porque es un sencillo y potente pluggin --> https://bootstrap-table.com/
Se habria de investigar en sus numerosos ejemplos si existe la opcion de integrar botones en su propia barra...
TWeb usa bootstrap-table porque es un sencillo y potente pluggin --> https://bootstrap-table.com/
Se habria de investigar en sus numerosos ejemplos si existe la opcion de integrar botones en su propia barra...
Salutacions, saludos, regards.
Charly
"...programar es fácil, hacer programas es difícil..."
https://httpd2.blogspot.com/
https://forum.modharbour.app
Charly
"...programar es fácil, hacer programas es difícil..."
https://httpd2.blogspot.com/
https://forum.modharbour.app
-
- Mensajes: 24
- Registered for: 3 years 6 months
Saludos ;
Ejemplo de añadir botones en su propia barra
Ejemplo de añadir botones en su propia barra
Código: Seleccionar todo
<link href="https://unpkg.com/bootstrap-table@1.18.0/dist/bootstrap-table.min.css" rel="stylesheet">
<script src="https://unpkg.com/bootstrap-table@1.18.0/dist/bootstrap-table.min.js"></script>
<table
id="table"
data-toggle="table"
data-height="460"
data-show-columns="true"
data-show-refresh="true"
data-show-columns-toggle-all="true"
data-show-pagination-switch="true"
data-show-toggle="true"
data-show-fullscreen="true"
data-buttons="buttons"
data-url="json/data1.json">
<thead>
<tr>
<th data-field="id">ID</th>
<th data-field="name">Item Name</th>
<th data-field="price">Item Price</th>
</tr>
</thead>
</table>
<script>
function buttons () {
return {
btnUsersAdd: {
text: 'Highlight Users',
icon: 'fa-users',
event: function () {
alert('Do some stuff to e.g. search all users which has logged in the last week')
},
attributes: {
title: 'Search all users which has logged in the last week'
}
},
btnAdd: {
text: 'Add new row',
icon: 'fa-plus',
event: function () {
alert('Do some stuff to e.g. add a new row')
},
attributes: {
title: 'Add a new row to the table'
}
}
}
}
</script>