Comunidad de diseño web y desarrollo en internet online

jqGrid ayuda para añadir una nueva fila

Citar            
MensajeEscrito el 19 Oct 2010 10:07 am
Hola a todos,

estoy usando jqgrid para mostrar datos estoy utilizando el "Grid as Subgrid".

Quiero que con un botón de una fila del Grid principal se añada una nueva fila al final del subgrid que corresponde.
En teoría esto debería llevar a cabo el trabajo:

[Añadir botón a cada fila de Grid principal]

Código Javascript :

gridComplete: function() {
            var ids = jQuery("#" + MAINGRIDID).jqGrid('getDataIDs');
                var idsLength = ids.length;
                for (var i = 0; i < idsLength; i++) {
                    var cl = ids[i];
                    ad = "<input style='height:22px;width:20px;' type='button' value='+' onclick=\"addNewRowToMainGrid('" + cl + "');addNew();\" />";
                    jQuery("#table").jqGrid('setRowData', ids[i], { act: ad });
                }
            },


[La función que ejecuta el botón]

Código Javascript :

 function addNewRowToMainGrid(id) {

   // 1.- Expand his subgrid
   
   var myGrid = jQuery("#"+MAINGRIDID).jqGrid('expandSubGridRow', id );
   var mySubGrid = jQuery("#" + subGridId);

   //var rowCount = mySubGrid.getGridParam('reccount');
   
   // 2.- Add New row to subgrid
   if (myGrid.length && mySubGrid2.length) {
      var datarow = { act: "", ObjetivoNombre: "", TipoObjetivo: "", ObjetivoTipo1: "", ObjetivoTipo2: "",
         ObjetivoTipo3: "", Autoevaluacion: "", ResultadoFinal: ""
      };
      
      var newRowID = 'newrow' + id + 1

      if (mySubGrid.length) {
         if (mySubGrid.addRowData(newRowID, datarow, 'last')) {
            mySubGrid.editRow(newRowID, true);
         }
      }            

   }
}


La función lanza un expad para mostrar el Grid y hace un addRowData al subgrid. El problema es que ignora el parámetro 'last'. Podéis ver una línea comentada que coge el número de filas. Esta linea me devuelve 0 y creo que aquí está el problema. Es como si el subgrid no estuviera cargado y por tanto no puede posicionar bien la nueva fila (siempre me la pone en la primera fila).

Si pulso 2 veces el botón, en la segunda pasada por la función ya tenemos expandido el subgrid de antes y entonces sí me hace un Add bien posicionado y el cuenta las filas bien.

Soy bastante nuevo en JS/JQuery/JQGrid y no sé bien como actuar, no sé si hay algo que pueda "refrescar" los datos inmediatamente después de hacer el expand o bien hay una manera de "llamar 2 veces a la función" .

Alguna idea? :-)

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 19 Oct 2010 10:11 am
Ostras! No se pueden editar los mensajes? Quizás no tengo karma suficiente -_-

Ignorar la llamada a la función addNew() que hace el botón, me he olvidado de borrarla de una prueba anterior

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 19 Oct 2010 10:51 am
Pues :-) ya lo he arreglado, resulta que al usar JSON y asp.net 2.0 tengo que hacer un bucle de addRowData cuando recibo los datos, si después de ese bucle verifico si he llegado ahí desde el botón de añadir fila y no desde el botón de expandir fila puedo hacer un addrow adicional con su editrow para modificar inline ^^

Gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.