2010-11-20 24 views
13

Es una adición a mi pregunta anterior sobre la adición de columnas en la tabla jqGrid-based. Aquí mi nuevo js-código:cuadrícula de recarga jqGrid

var col_names = ['First', 'Second', 'Third', 'Fourth', 'Fifth']; 
var col_model = [ 
     {name:'invid', index:'invid', width:100}, 
     {name:'invdate', index:'invdate', width:90}, 
     {name:'amount', index:'amount', width:80, align:'right'}, 
     {name:'tax', index:'tax', width:80, align:'right'}, 
     {name:'total', index:'total', width:80, align:'right'}, 
]; 

function createGrid() 
{ 
    var handle = $("#list").jqGrid({ 
    url:'data.xml', 
    datatype: 'xml', 
    mtype: 'GET', 
    colNames: col_names, 
    colModel : col_model, 
    }); 
} 

Ahora me llaman createGrid(); después de cargar el documento, todo funciona bien. Ahora quiero agregar una nueva columna (con los datos vacíos) y volver a cargar jqGrid:

$("#add_column").click(function() { 
     $('#list').trigger("DestroyGrid"); // Also tried UnloadGrid 

     col_names.push('New'); 
     col_model.push({name: 'test', index: 'test', width: 100}); 

     createGrid(); // And recreate grid 
    }); 

Pero no pasa nada, ¿por qué?


UPD

$("#add_column").click(function() { 
     col_names.push('New'); 
     col_model.push({name: 'test', index: 'test', width: 100}); 

     $('#list').trigger("reloadGrid"); 
    }); 

La misma situación


UPD2 he probado todas estas:

ajaxGridOptions: {cache: false}, 
loadonce:false 

No cambió la situación.

+0

'ajaxGridOptions: {cache: false}' y 'loadonce: false' son valores predeterminados que no pueden ayudar. Si tu respuesta no te ayuda, publica el ejemplo de código completo con código HTML y XML de prueba que usas y lo modifico para que funcione. – Oleg

Respuesta

15

que puede hacer acerca siguiente

var counter=1; // to be able to click more then one time 
$("#add_column").click(function() { 
    $("#list").jqGrid('GridUnload'); 

    col_names.push('New'+counter); 
    col_model.push({name: 'test'+counter, index: 'test'+counter, width: 100}); 
    counter++; 

    createGrid(); 
}); 
+0

¡Gracias! Esto funciona para mí – Ockonal

+0

@Ockonal: ¡Bienvenido! – Oleg

2

tratar de no destruir/Crear, pero .trigger("reloadGrid");

UPD:: tratar de pasar loadonce: falsa a la creación de rejilla params

UPD2:: Parecía jqGrid no puede operar con los cambios de columna " En vuelo". Intenta destruir la primera cuadrícula y crea otra en lugar de ella.

+0

Mira la actualización, por favor, no pasa nada. – Ockonal

+0

Actualizado nuevamente, mira, por favor. – Ockonal

+0

¿Cómo puedo destruirlo? – Ockonal