2010-11-20 31 views
13

Đây là một bổ sung cho câu hỏi trước của tôi về việc thêm cột vào bảng dựa trên jqGrid. Đây là mã js mới của tôi:jqGrid tải lại lưới

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

Bây giờ tôi gọi createGrid(); sau khi tài liệu được tải, mọi thứ hoạt động tốt. Bây giờ tôi muốn thêm một cột mới (với dữ liệu trống) và tải lại 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 
    }); 

Nhưng không có gì xảy ra, tại sao?


UPD

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

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

Tình hình tương tự


UPD2 tôi đã cố gắng này:

ajaxGridOptions: {cache: false}, 
loadonce:false 

Không thay đổi tình hình.

+0

'ajaxGridOptions: {cache: false} 'và' loadonce: false' là thiết lập mặc định họ không thể giúp đỡ. Nếu câu trả lời yo không giúp bạn, hãy đăng ví dụ mã đầy đủ với mã HTML và kiểm tra XML mà bạn sử dụng và tôi sửa đổi nó để làm cho nó hoạt động. – Oleg

Trả lời

15

Bạn có thể làm gì về sau

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

Cảm ơn! Điều này làm việc cho tôi. – Ockonal

+0

@Ockonal: Bạn hoan nghênh! – Oleg

2

cố gắng không để tiêu diệt/Tạo, nhưng .trigger("reloadGrid");

UPD:: cố gắng để vượt qua loadonce: false để tạo lưới params

UPD2:: Có vẻ như jqGrid không thể hoạt động với những thay đổi cột " Bay lên". Cố gắng phá hủy lưới đầu tiên và tạo một lưới khác thay vì nó.

+0

Nhìn vào bản cập nhật, xin vui lòng, không có gì xảy ra. – Ockonal

+0

Đã cập nhật lại, vui lòng xem. – Ockonal

+0

Làm thế nào tôi có thể phá hủy nó? – Ockonal

Các vấn đề liên quan