0

我有一个 jqGrid 和一个 jquery UI 按钮工具栏。我的工具栏由查看和编辑模式组成。在我的 jqGrid onSelectRow 中,我使用 isInEditMode 方法检查编辑模式。如果具有 ui-active-state 的按钮是编辑按钮,则返回 true。

我的网格似乎加载正确,并且悬停类打开/关闭作为将鼠标拖动到行上。如果我未处于编辑模式并单击一行,它会执行其他功能,这是正确的。但是当 isInEditMode 返回 true 时,它​​似乎只允许 onSelectRow 触发一次。

非常感谢所有的帮助。

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

1 回答 1

0

else事件句柄内部的部分看起来onSelectRow有点奇怪。你最好不要调用onSelectRowinside ofonSelectRow并且在getRowData同一个else代码片段中使用 inside 似乎我也错了(rowId应该是函数的参数)。

于 2010-08-18T08:03:43.290 回答