2010-11-20 4 views
13

C'est un ajout à ma précédente question sur l'ajout de colonnes dans une table jqGrid. Voici mon nouveau js code:jqGrid reload grid

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

Maintenant, j'appelle createGrid(); après le document est chargé, tout fonctionne bien. Maintenant, je veux ajouter une nouvelle colonne (avec des données vides) et de recharger 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 
    }); 

Mais rien ne se passe, pourquoi?


UPD

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

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

La même situation


UPD2 J'ai essayé ces:

ajaxGridOptions: {cache: false}, 
loadonce:false 

N'a pas changé la situation.

+0

'ajaxGridOptions: {cache: false}' et 'loadonce: false' sont les paramètres par défaut, ils ne peuvent pas aider. Si votre réponse ne vous aide pas, veuillez poster l'exemple de code complet avec du code HTML et tester le code XML que vous utilisez et je le modifie pour le faire fonctionner. – Oleg

Répondre

15

Vous pouvez faire à la suite

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

Merci! Cela fonctionne pour moi. – Ockonal

+0

@Ockonal: Bienvenue! – Oleg

2

essayez de ne pas détruire/Créer, mais .trigger("reloadGrid");

UPD:: essayez de passer loadonce: false à la création de la grille params

UPD2:: Semblait jqGrid ne peut pas fonctionner avec des changements de colonne " A la volée ". Essayez de détruire la première grille et créez-en une autre à la place.

+0

Regardez la mise à jour, s'il vous plaît, rien ne se passe. – Ockonal

+0

Mis à jour à nouveau, regardez, s'il vous plaît. – Ockonal

+0

Comment puis-je le détruire? – Ockonal