【问题标题】:jqGrid - Trigger reloadGrid inside afterSaveCell methodjqGrid - 在 afterSaveCell 方法中触发 reloadGrid
【发布时间】:2011-07-06 15:18:49
【问题描述】:

我在修改单元格后尝试重新加载我的网格,但我收到以下错误消息:“ajax 请求错误”。

这是我的功能:

afterSaveCell: function(rowid, name, val, iRow, iCol){  
    //... do some stuff ...  
    //save cell in the database  
    //... some more stuff ...  
    $("#grid").trigger("reloadGrid")  
}

这个网格是在服务器上构建的(我只在运行时知道我的列),所以我想我应该触发洞 $.ajax() 函数(所有网格定义都在其中)。这是正确的吗?我该怎么做?

【问题讨论】:

  • 你可以使用 firebug 或 chrome 开发工具来监控 xhr 请求吗? 1)保存网格时是否会触发请求? 2)如果是这样,您可以将请求复制并粘贴到浏览器选项卡(非ajax)中并获得有效结果吗?
  • @Jody 1) 是 2) 是的,如果通过有效结果您的意思是查看漏洞页面。我正在使用.net webmethod,网址是 Page.aspx/get_json_data?id=someId
  • 如果您看到整个页面,可能是 jqgrid 需要一个 json 字符串吗?我想如果请求是 XHR,您的 Page.aspx 可能会决定只发回 json 响应,但从脚本的名称来看,我认为不会。
  • @Jody 我知道你要去哪里但是当我更新一个单元格时网格正在工作(我在网格和数据库中看到更新的值)。仅当我尝试在 afterSaveCell 函数中触发 reloadGrid 函数时才会出现该问题。也许这不是触发重新加载的地方。我需要完全重新加载才能从数据库中获取一些具有计算值的列。

标签: jquery jqgrid


【解决方案1】:

我没有找到这样做的方法。所以我在afterSubmitCell 事件中执行了ajax 请求(将值保存在数据库中),然后计算afterSaveCell 中的其余字段(使用javascript 和大量getCellsetCell 调用)。

事实上,这最终成为了一种更好的方法,因为用户不必等待超过 1 秒即可看到更新的值。 afterSaveCell 事件的 documentation 还说:

仅适用于可编辑的单元格;此事件在单元格成功保存后触发。 这是更改其他内容的理想场所。

这样做的缺点是我有重复的逻辑来计算网格的某些列(C# 中的服务器端和 javascript 中的客户端)

【讨论】:

    猜你喜欢
    • 2019-08-24
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多