2010-11-20 15 views
13

È un'aggiunta per la precedente domanda sull'aggiunta di colonne nella tabella basata su jqGrid. Ecco il mio nuovo js-code:jqGrid ricarica griglia

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, 
    }); 
} 

Ora mi chiamano createGrid(); dopo il documento è stato caricato, tutto funziona bene. Ora voglio aggiungere una nuova colonna (con dati vuoti) e ricaricare 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 
    }); 

ma non succede nulla, perché?


UPD

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

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

La stessa situazione


UPD2 Ho provato questi:

ajaxGridOptions: {cache: false}, 
loadonce:false 

Non ha modificato la situazione.

+0

'ajaxGridOptions: {cache: false}' e 'loadonce: false' sono impostazioni predefinite che non possono aiutare. Se la risposta ti aiuta, per favore pubblica l'esempio completo di codice con codice HTML e prova XML che usi e io lo modifico per farlo funzionare. – Oleg

risposta

15

si può fare su seguente

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

Grazie! Questo funziona per me. – Ockonal

+0

@Ockonal: prego! – Oleg

2

cercare di non distruggere/creare, ma .trigger("reloadGrid");

UPD:: cercare di passare loadonce: true alla creazione griglia params

UPD2:: Sembrava jqGrid sopraelevazione operare con i cambiamenti della colonna " In volo ". Prova a distruggere la prima griglia e crearne un'altra al posto di essa.

+0

Guarda l'aggiornamento, per favore, non succede nulla. – Ockonal

+0

Aggiornato di nuovo, guarda, per favore. – Ockonal

+0

Come posso distruggerlo? – Ockonal

Problemi correlati