【问题标题】:jqGrid selects row only once, subsequently cannot select any other row, grid stuckjqGrid 仅选择一次行,随后无法选择任何其他行,网格卡住
【发布时间】:2010-08-17 19:34:06
【问题描述】:

我有一个 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 });

【问题讨论】:

    标签: jquery jqgrid jqgrid-asp.net


    【解决方案1】:

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

    【讨论】:

    • onSelectrow(rowData) 是传递给生成网格的方法的函数。我已更改为函数的名称以避免将来发生任何冲突,但我仍然收到此问题。
    • 目前您发布的代码有许多对外部函数的引用(isInEditModeonSelectGridRowbudgetGridLoadComplete)。所以你的问题无法重现。您描述的问题在简单的 jqGrid 中不存在。如果您希望有人解决您的问题,您应该发布一个代码,以便其他人可以重现您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2014-12-07
    • 2011-04-03
    • 2020-03-05
    • 1970-01-01
    相关资源
    最近更新 更多