如何动态更改jqgrid中的扩展列级别?

时间:2012-03-15 09:27:35

标签: jqgrid

我正在使用具有以下配置的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”方法设置级别但是缩进没有更新,如何更改缩进?请帮忙

1 个答案:

答案 0 :(得分:0)

level设置新值并非易事。简单使用setCell将无效。让我们知道您要将rowid更改为levelnewLevel。我认为代码应该是以下内容:

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