【问题标题】:aftersavefunc JQGrid called before call to backendaftersavefunc JQGrid 在调用后端之前调用
【发布时间】:2018-07-13 15:41:46
【问题描述】:

我有一个带有自定义按钮的内联编辑的 jqgrid,如果保存不成功,我正在尝试显示自定义消息或弹出窗口:

editurl: '@Url.Action("UpdateMatrixData")',
                datatype: "json",
                postData: {
                    sp: function () { return getFilter(); }
                },
                postData: {
                    StartDate: function () { return $("#StartDate").val(); },
                    EndDate: function () { return $('#EndDate').val(); },
                },
                gridComplete: function ()
                {
                    var ids = jQuery("#evGrid").jqGrid('getDataIDs');
                        for (var i = 0; i < ids.length; i++)
                        {
                            var cl = ids[i];
                            be = "<input style='height:15px;width:15px;' title='Edit selected row' type='button' class='EditGridButton'  onclick=\"jQuery('#evGrid').editRow('" + cl + "');\" />"
                            se = "<input style='height:15px;width:15px;' title='Save row' type='button' class='SaveButton'  onclick=\"jQuery('#evGrid').saveRow('" + cl + "', '', '', '', reload());\" />"  // dont Need to refesh grid after saving row - call reload function
                            ce = "<input style='height:15px;width:15px;' title='Cancel row editing' type='button' class='CancelButton'  onclick=\"jQuery('#evGrid').restoreRow('" + cl + "');\" />";
                            jQuery("#evGrid").jqGrid('setRowData', ids[i], { act: be + se + ce });
                        }
                },

 function reload(rowid, response) {

            alert(response)
            $(this).jqGrid('setGridParam', { datatype: 'json' });
            $(this).trigger('reloadGrid', [{ page: 1 }]);
        }

但是响应为空?并在调用 updateMatrixData 方法之前调用它?

updateMatrixData 返回 Json(true) 或 Json(false)

return Json(isSucess);

【问题讨论】:

    标签: asp.net-mvc-4 jqgrid


    【解决方案1】:

    你在使用中的主要错误

    onclick=\"jQuery('#evGrid').saveRow('" + cl + "', '', '', '', reload());\"
    

    而不是

    onclick=\"jQuery('#evGrid').saveRow('" + cl + "', '', '', '', reload);\"
    

    reload 是回调函数,将被 jqGrid 调用。如果您使用reload(),那么您的代码调用reload mit 空参数,在jqGrid 执行此操作之前(jqGrid 根本不获取函数的引用,而是从reload() 返回undefined)。

    【讨论】:

    • @Standage:不客气!一般来说,您的代码的许多部分都应该更改。使用setRowData 在循环中修改网格内容是填充网格的最慢方法。而不是应该更好地使用自定义格式化程序或预定义格式化程序,如formatter: "actions"。另一方面,有时没有时间重写旧代码,重要的是让它工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2023-04-08
    • 2015-07-31
    相关资源
    最近更新 更多