2010-11-20 19 views
13

Jest to dodatek do poprzedniego pytania dotyczącego dodawania kolumn do tabeli opartej na jqGrid. Oto mój nowy 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, 
    }); 
} 

Teraz nazywam createGrid(); po załadowaniu dokumentu, wszystko działa bez zarzutu. Teraz chcę dodać nową kolumnę (z pustymi danych) i przeładować 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 
    }); 

Ale nic się nie dzieje, to dlaczego?


UPD

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

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

Taka sama sytuacja


UPD2 Próbowałem te:

ajaxGridOptions: {cache: false}, 
loadonce:false 

Nie zmieniłem sytuacji.

+0

'ajaxGridOptions: {cache: false}' i 'loadonce: FALSE są ustawieniami domyślnymi, że nie może pomóc. Jeśli odpowiedź yo nie pomoże, opublikuj pełny przykład kodu z kodem HTML i przetestuj XML, którego używasz, i zmienię go, aby działał. – Oleg

Odpowiedz

15

można zrobić po

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

Dzięki! To działa dla mnie. – Ockonal

+0

@Ockonal: Witamy! – Oleg

2

nie próbować zniszczyć/Tworzenie, ale .trigger("reloadGrid");

UPD:: spróbuj przejść loadonce: false do tworzenia siatki params

UPD2:: Wydawało się jqGrid mogę pracować ze zmianami kolumnie " W locie ". Spróbuj zniszczyć pierwszą siatkę i utwórz inną zamiast niej.

+0

Spójrz na aktualizację, proszę, nic się nie dzieje. – Ockonal

+0

Zaktualizowana ponownie, proszę, proszę. – Ockonal

+0

Jak mogę to zniszczyć? – Ockonal