9 de septiembre de 2008

Hacer Nuevo item desde el related panel


Este proyecto hecho en PostgreSQL muestro como hacer un insert desde el related panel... por medio de un dialogo.
Si seleccionamos la opcion "nuevo item" en el related editor(un select editor cargado con informacion relacional) . podemos observar que se abre un dialogo para poder llenar nuestra informacion que nos falta en esta lista principal de items.

Esto es lo que basicamente realiza la mini aplicacion.

Para una mejor comprensio explicare algunos puntos no comunes que tiene este aplicacion.

!) insertar en la tabla una fila en el primer registro O en el id y "Nuevo NombreEntidad" en Nombre
por ejemplo
id_categoria | nombre |
=================
0 | Nueva Categoria
1 | aaaaa
2 | bbbbb
3 | ccccc
...
2) En la pagina que vas a aplicar estos propiedades
Esto es para asociar el evento onclick con el dialogo
dojo.declare("PageProducts", wm.Page, {
start: function() {
this.connect(app.pageDialog.domNode,"click", this, "click");
},
click: function(e) {
.....
}
,
_end: 0
});
esto es para filtrar el evento si estas clickeando en el boton Ok o si estas cerrando el dialogo => e.target.id == "app_pageDialog"
pageDialog
click: function(e) {
if(e.target.id == "app_pageDialog"){
....
}
},
esto es para actualizar el nuevo valor en el related editor: this.categoryLookupEditor1.update();
cortersia de Ed Callahan...the ingeniero
WM ..
click: function(e) {
if(e.target.id == "app_pageDialog"){
this.categoryLookupEditor1.update();
}
}
Nada mas espero que pueda ser ayuda :)

Fuentes:

http://dev.wavemaker.com/forums/files/NewItemByDialog.zip
http://dev.wavemaker.com/forums/files/newitem.sql_.txt
http://dev.wavemaker.com/forums/files/screenshots.zip

5 de septiembre de 2008

Master Detail V2 en WM4



1)Importar la  base de datos "master_detai_db"
2)Crear liveViews para el master y el detail en LiveView panel
- masterView -> seleccionar todos los checkboxes y guardar
- detailView ->  seleccionar todos los  checkboxes y guardar
  
3)En el designer
- cambiar en layoutBox la propiedad "box" : de Top_to_Botton a Left_to_Right
- en el palette añadir 2 templates "SearchListDetail" y aplicar flex en los 2
4)Crear variables
 Crear 1 liveVariable para el master ->liveSource : masterView y quitarle el seleccionado a la propiedad autoUpdate
 Crear 1 liveVariable para el detail ->liveSource : detailView y quitarle el seleccionado a la propiedad autoUpdate
 Crear 1 variable para el actual master ->type : Master
5) Enlazar(Bind)..... master y detail con los widgets

Para el master:
   - Bind dataGrid1 con el liveVariable1 
- Bind liveVariable1 con el dataGrid1.selectedItem

Para el:
   - Bind dataGrid2 con el liveVariable2 
- Bind liveVariable2 con el dataGrid2.selectedItem

        Para el  actual_master:
- Bind variable1 -> dataSet -> idMaster con el liveForm1.dataOutput.idMaster


6) Filtrar el liveVariable2 para mostrar los datos del detail 
    - Bind detail -> master -> idMaster con el liveForm1.dataOutput.idMaster
    - En el liveForm2 -> event -> OnSuccess  -> liveVariable2
    - En el  dataGrid1 -> event -> OnSelected -> liveVariable2

7) Seleccionar el widget liveForm2 para poner el actual_master en el  related panel
- Seleccionar el widget masterSalesRelatedEditor1 y cambiar la propiedad "editingMode" : de lookup a readonly
   - Crear un evento en BeginInsert con javascript y colocar:
 liveForm2BeginInsert: function(inSender) {
    this.masterSalesRelatedEditor1.setDataSet(this.variable1);
 },

8) En la funcion inicial de la pagina poner: 
  start: function() { 
                      this.liveVariable1.update();  
                   }


Fuentes:

Mis cosas

Powered By Blogger