Как динамически изменить уровень раскрывающегося столбца в jqgrid? - PullRequest
1 голос
/ 15 марта 2012

Я использую сетку дерева 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,

В приведенной выше конфигурации имя является моим полем расширения, я передаю уровень на основе некоторой иерархии с сервера в виде данных json. Пользователь может изменить иерархию во время выполнения. Поэтому я должен изменить уровень и отступ для Имя поля. Я мог бы установить уровень, используя метод "setCell", но отступ не обновляется, как изменить отступ? Пожалуйста, помогите

1 Ответ

0 голосов
/ 15 марта 2012

Установка нового значения для 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...