Как заменить remapColums с remapColumnsByName в бесплатной jqgrid

Код из ответа вкак сохранить текущую строку в jqgrid

используется для сохранения состояния jqgrid. Сохраняет состояние столбца jqgrid, используя номера столбцов. Если jqgrid colmodel изменяется на сервере, это вызывает ошибку javascript в браузере.

Заморозить столбец rownum в JQGrid комментарий иhttps://github.com/free-jqgrid/jqGrid/blob/master/README49.md описывает методremapColumnsByName , Я надеялся, что использование этого исправит проблему.

бесплатно jqgrid был загружен с сегодняшнего git master. В состоянии сохранить после изменения размера столбцов или перемещения строки

saveColumnState.call($grid, $grid[0].p.remapColumns);

был изменен на

saveColumnState.call($grid, $grid[0].p.remapColumnsByName);

и в состоянии восстановить в loadComplete код

    if (isColState && myColumnsState.permutation.length > 0 &&
                      myColumnsState.permutation.length === cm.length) {
        $grid.jqGrid("remapColumns", myColumnsState.permutation, true);

    }

с

    if (isColState && myColumnsState.permutation.length > 0 &&
                      myColumnsState.permutation.length === cm.length) {
        $grid.jqGrid("remapColumnsByName", myColumnsState.permutation, true);
    }

Сейчас линия

 if (isColState && myColumnsState.permutation.length > 0 &&

вызывает ошибку

Uncaught TypeError: Cannot read property 'length' of undefined

Как это исправить, чтобы можно было использовать состояние столбца при изменении определения столбца?

Методы определяются как

var saveColumnState = function (perm) {
    var colModel = this.jqGrid('getGridParam', 'colModel'),
        i, l = colModel.length, colItem, cmName,
        postData = this.jqGrid('getGridParam', 'postData'),
        columnsState = {
            search: this.jqGrid('getGridParam', 'search'),
            page: this.jqGrid('getGridParam', 'page'),
            rowNum: this.jqGrid('getGridParam', 'rowNum'),
            sortname: this.jqGrid('getGridParam', 'sortname'),
            sortorder: this.jqGrid('getGridParam', 'sortorder'),
            autoedit: autoedit,
            rownumbers: $grid.jqGrid('getGridParam', 'rownumbers') && !$grid[0].p.colModel[0].hidden,

            searchWindow: searchParams,
            editWindow: editParams,
            permutation: perm,
            selectedRows: idsOfSelectedRows,
            colStates: {}
        },
        colStates = columnsState.colStates;

    if (typeof (postData.filters) !== 'undefined') {
        columnsState.filters = postData.filters;
    }

    for (i = 0; i < l; i++) {
        colItem = colModel[i];
        cmName = colItem.name;
        if (cmName !== 'rn' && cmName !== 'cb' && cmName !== 'subgrid') {
            colStates[cmName] = {
                width: colItem.width,
                hidden: colItem.hidden
            };
        }
    }
    saveObjectInLocalStorage(myColumnStateName, columnsState);
};

var saveObjectInLocalStorage = function (storageItemName, object) {
    if (typeof window.localStorage !== 'undefined') {
        window.localStorage.setItem(storageItemName, JSON.stringify(object));
    }
};

Ответы на вопрос(1)

Ваш ответ на вопрос