jqGrid重新加载表格。

13
这是我之前提出的有关在基于jqGrid的表格中添加列的问题的补充说明。这是我的新JS代码:
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,
  }); 
}

现在我在文档加载后调用 createGrid(),一切都很正常。现在我想添加一个新列(带空数据)并重新加载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
  });

但是没有任何反应,为什么呢?


更新

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

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

同样的情况


UPD2 我尝试了以下方法:

ajaxGridOptions: {cache: false},
loadonce:false

没有改变情况。


ajaxGridOptions: {cache: false}loadonce:false是默认设置,它们无法帮助。如果您的答案没有帮助到您,请发布带有HTML代码和测试XML的完整代码示例,我将修改它使其正常工作。 - Oleg
2个回答

15

您可以尝试以下方法:

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

2

尽量不要销毁/创建,而是使用 .trigger("reloadGrid");

更新:在创建网格时尝试传递loadonce:false参数。

更新2:似乎jQgrid无法在“运行时”更改列。尝试先销毁第一个网格,然后创建另一个替代它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接