jqGrid只选择一次行,随后不能选择任何其他行,网格卡住

时间:2010-08-17 19:34:07

标签: jquery jqgrid jqgrid-asp.net

我有一个jqGrid以及一个jquery UI按钮工具栏。我的工具栏包含View&编辑模式。在我的jqGrid onSelectRow中,我使用方法isInEditMode检查编辑模式。如果具有ui-active-state的按钮是编辑按钮,则返回true。

我的网格似乎正确加载,并且悬停类在鼠标悬停在行上时打开/关闭。如果我没有处于编辑模式并单击一行它会执行其他功能,这是正确的。但是当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 :(得分:0)

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