CONTEXT
我正在努力将一个非常大的应用程序与许多自定义网格迁移到jqgrid-free。所有的网格都在现有的代码中工作,但是现有的大部分工作并没有很好地转化,这是令人沮丧的。为什么以下网格定义没有显示数据但仍然没有错误?
CODE
{
datastr: val,
altRows: true,
datatype: 'jsonstring',
sortable: false,
width: Global.bodyWidth() - 14,
colNames: [],
rowNum: 10000,
colModel: col_model,
onCellSelect: function(id){
$this.grid_select_id_array = [id];
$this.setDefaultMenu();
},
ondblClickRow: function() {
$this.onGridDblClickRow();
},
gridview: true,
treeGrid: true,
treeGridModel: 'adjacency',
treedatatype: 'local',
ExpandColumn: 'name',
multiselect: false,
jsonReader: {
repeatitems: false,
root: function( obj ) {
return obj;
},
page: function( obj ) {
return 1;
},
total: function( obj ) {
return 1;
},
records: function( obj ) {
return obj.length;
}
}
}
FIDDLE
这里有一个小提示,可以更详细地显示数据的样子: 请参阅:https://jsfiddle.net/catbadger/mhvzerdg/18
答案 0 :(得分:1)
我建议您在创建网格时填充网格中的数据。在创建网格后直接调用始终setData
方法更有效。此外,free jqGrid允许使用datatype: "local"
和data
作为输入数据创建TreeGrid。选项jsonReader
和许多其他选项将不再需要。你可以只使用
var grid_setup = {
altRows: true,
width: $('body').width(),
treeGrid: true,
treeGridModel: 'adjacency',
ExpandColumn: 'name',
multiselect: false
};
grid = new TTGrid('grid_here',grid_setup,columns, "", result_data);
请参阅https://jsfiddle.net/OlegKi/mhvzerdg/19/
更新:如果您想了解为什么您的原始代码不起作用,您可以查看另一个演示https://jsfiddle.net/OlegKi/mhvzerdg/20/,它只修复选项{{1} } treedatatype: 'local'
和更改
treedatatype: 'jsonstring'
到
this.setData = function( data ) {
if ( this.grid ) {
this.grid.clearGridData();
this.setGridParam({data: data});
this.reloadGrid();
} else {
throw('ERROR: Grid is not ready yet.');
}
}
我仍然建议您按照我的第一个演示并在创建过程中填充网格。