我正在使用jqGrid,我在jstree的调用事件后遇到刷新数据的问题。
我跟随此post。确切地说,我不知道该把它放在哪里。
这是我的代码。我该怎么办?
$('#jsTree_DonVi').on('changed.jstree', function (e, data) {
var id = data.instance.get_node(data.selected[0]).id;
var text = data.instance.get_node(data.selected[0]).text;
var tinhTrang = 0;
var nam = 0;
// I tried but it's not working
$("#jqGrid").setGridParam({ datatype: 'json' });
$("#jqGrid").trigger("reloadGrid");
//---
$("#jqGrid").jqGrid({
url: '/Home/GetData',
postData: {
"id": id,
"nam": nam,
"tinhTrang": tinhTrang
},
datatype: "json",
colModel: [
{
label: 'Tên công trình', name: 'Ten', sorttype: 'string', width: 800, align: 'center'
},
{ label: 'Kế hoạch/Thực hiện', name: 'KHTH', sorttype: 'string', align: 'center' },
{ label: 'Địa điểm xây dựng', name: 'DiaDiem', sorttype: 'string', align: 'center' }
],
viewrecords: true, // show the current page, data rang and total records on the toolbar
rowNum: 30,
width: 1228,
height: 500,
loadonce: true,
pager: "#jqGridPager"
})};
我的HTML:
<div id="renderTable">
<table id="jqGrid"></table>
<div id="jqGridPager"></div>
</div>
此处解决方案:
我将jqGrid从Guriddo jqGrid JS更改为Free jqGrid。
并替换
$("#jqGrid").setGridParam({ datatype: 'json' });
$("#jqGrid").trigger("reloadGrid");
要
$("#jqGrid").jqGrid('GridUnload');
答案 0 :(得分:0)
我认为问题的存在是因为你在事件处理程序($('#jsTree_DonVi').on('changed.jstree', function (e, data) {/* here */});
中创建了网格。了解jqGrid在相对复杂的表结构中转换初始空<table id="jqGrid"></table>
非常重要。 div。有关详细信息,请参阅the post。
您可以使用GridUnload
方法解决问题。你可以替换
$("#jqGrid").setGridParam({ datatype: 'json' });
$("#jqGrid").trigger("reloadGrid");
行
$("#jqGrid").jqGrid("GridUnload");
GridUnload
的实现可能取决于jqGrid的分支,您使用(free jqGrid,Guriddo jqGrid JS或版本中的旧jqGrid&lt; = 4.7)。我开发了叉free jqGrid,我建议你。您可以在CDN中使用它(请参阅the wiki article)或从众所周知的JavaScript存储库中安装:npm,bower,NuGet或WebJars(见the readme)。