我正在使用具有以下配置的jqgrid树网格
colModel :
[
{
name:'id',width : 30, editable : false, align:"right",sortable : false, hidden : true, key : true, hidedlg:true
},
{
name:'no',width : 50, editable : false, align:"left", sortable : true,sorttype:"text"
}
},
{
name:'name', width : 300, editable : true, sortable : true, sorttype:"text"
}
],
treeGridModel:'adjacency',
ExpandColumn:'name'
treeGrid: true,
cellEdit: true,
sortable: true,
从上面的配置中,name是我的扩展字段,我根据服务器的某些层次结构传递级别作为json数据。用户可能希望在运行时更改层次结构。所以我应该更改级别和缩进name field.I可以使用“setCell”方法设置级别但是缩进没有更新,如何更改缩进?请帮忙
答案 0 :(得分:0)
为level
设置新值并非易事。简单使用setCell
将无效。让我们知道您要将rowid
更改为level
值newLevel
。我认为代码应该是以下内容:
var $iconDiv, iCol,
$tr = $('#' + $.jgrid.jqID(rowid)), //get the tree row
rowData = $myGrid.jqGrid('getLocalRow', rowid),
$grid = $("#list"), // grid
getColumnIndexByName = function (myGrid, columnName) {
var cm = myGrid.jqGrid('getGridParam', 'colModel'), i,
l = cm.length;
for (i = 0; i < l; i++) {
if (cm[i].name === columnName) {
return i; // return the index
}
}
return -1;
}; // get local row data
// update level in the local jqGrid data
rowData.level = newLevel;
// update the position of the icon
$iconDiv = $tr.find("div.tree-wrap");
$iconDiv.width((newLevel + 1) * 18); // 18px per level
$iconDiv.children("div.treeclick:first").css("left", (newLevel * 18) + 'px');
// update the value in the hidden level column
iCol = getColumnIndexByName.call($grid, "level");
$tr.children('td:eq(' + iCol + ')').text(newLevel);