jqGrid выбирает строку только один раз, впоследствии не может выбрать любую другую строку, застрять в сетке - PullRequest
0 голосов
/ 17 августа 2010

У меня есть jqGrid вместе с панелью инструментов jQery UI.Моя панель инструментов состоит из режима просмотра и редактирования.В моем jqGrid onSelectRow я проверяю режим редактирования с помощью метода isInEditMode.Возвращается значение true, если кнопка с активным состоянием ui является кнопкой редактирования.

Кажется, что моя сетка загружается правильно, и классы при наведении курсора включаются / выключаются, как при наведении мыши на строки.Если я не в режиме редактирования и щелкаю строку, это выполняет другие функции, что является правильным.Но когда isInEditMode возвращает true, он только позволяет onSelectRow запускать ONCE.

Большое спасибо за помощь.

var lastselTsg;

grid.jqGrid({
        colNames: ['BudgetId', 'BudgetAccountId', 'Account #', 'Name', 'Cost', 'StaticRowId', 'SortOrder'],
        colModel: [
            { name: 'BudgetId', index: 'BudgetId', hidden: true, edithidden: true },
            { name: 'BudgetAccountId', index: 'BudgetAccountId', hidden: true, edithidden: true },
            { name: 'AccountNumber', index: 'AccountNumber', sortable: false, width: 70 },
            { name: 'BudgetName', index: 'BudgetName', sortable: false, width: 230, editable: true, edittype: 'text', editoptions: {
                defaultValue: "",
                dataInitInit: function (el) {
                    var value = $(el).val();

                    value = value.replace("<strong>", "");
                    value = value.replace("</strong>", "");

                    $(el).val(value);
                    $(el).focus();

                    if (value == "") {
                        $(el).remove();

                        return false;
                    }

                }
            }
            },
            { name: 'TotalCost', index: 'TotalCost', sortable: false, formatter: totalCurrencyFormatter, width: 100 },
            { name: 'StaticRowId', index: 'StaticRowId', sortable: false, hidden: true, edithidden: true },
            { name: 'SortOrder', index: 'SortOrder', sortable: false, hidden: true, edithidden: true }
        ],
        pager: pager,
        pgbuttons: false,
        pginput: false,
        rowlist: [],
        sortname: 'SortOrder',
        rowNum: 99999999,
        sortorder: "asc",
        datatype: "json",
        viewrecords: true,
        url: url + "GetLoad",
        editurl: url + "SaveGrid/",
        loadComplete: function (data) {

        },
        onSelectRow: function (rowId) {
            if (isInEditMode(budgetId)) {
                if (rowId && rowId !== lastselTsg) {

                    grid.jqGrid('restoreRow', lastselTsg);

                    var rowData = grid.jqGrid("getRowData", rowId);
                    if (rowData != undefined && rowData != null) {
                        console.debug("entering edit mode");    

                        grid.jqGrid('editRow', rowId, true, '', '', url + 'SaveTopSheet', {
                            budgetAccountId: rowData.BudgetAccountId
                        }, 
                        function(rowid, response) {
                            console.debug("aftersave: reloadGrid");
                            grid.trigger("reloadGrid");
                        }, '', function(rowid, reuslt) {
                            console.debug("after restore: reloadGrid");
                            grid.trigger("reloadGrid");
                        });

                    }

                    lastselTsg = rowId;
                }
            } else {
                var getRowData = $("#baseTopSheetGrid" + budgetId).jqGrid('getRowData');
                var rowData = getRowData[rowId - 1];

                onSelectGridRow(rowData);
            }
        },
        gridComplete: function () {

            var ids = grid.jqGrid('getDataIDs');
            var getRowData = grid.jqGrid('getRowData');

            if ($.isFunction(budgetGridLoadComplete))
                budgetGridLoadComplete(getRowData);

        }
    }).navGrid(pager, { edit: false, add: false, del: false, search: true });

1 Ответ

0 голосов
/ 18 августа 2010

Часть else внутри дескриптора события onSelectRow выглядит немного странно.Вам лучше не вызывать onSelectRow внутри onSelectRow, и использование getRowData внутри того же фрагмента кода else кажется мне также неправильным (rowId должен быть параметром функции).

...