关于 ajax:jqGrid 更新 subGrid 中的行不刷新缓存

jqGrid update row in subGrid does not refresh cache

我有一个使用 subGridRowExpanded 的 jqGrid 子网格。对于每个网格行,子网格包含 7 行。最初,当展开网格行时,子网格使用 ajax 检索 7 行数据。如果我更新子网格中的 7 行之一并单击保存,我使用 ajax 将所有 7 行保存到服务器,并使用 editRow 将 7 行保存到子网格。

这就是问题所在。如果我关闭此 subGrid 并再次重新打开它,则 subGrid 中的 7 行将填充来自原始加载的数据而没有任何更改。解决这个问题的唯一方法是在 ajax 调用中设置 cache:false 。

当我使用 editRow (key : true) 将行更新为 saveRow() 而不是通过关闭缓存再次返回服务器时,有没有办法更新缓存?

谢谢。


不能只"更新"网络浏览器的缓存。而不是服务器应包含在管理缓存的 HTTP 响应标头中。如果您希望从服务器获取每个 Ajax 请求,您应该将其包含在服务器响应中。例如,我几乎总是包含以下 header

1
Cache-Control: private, max-age=0

在为网格提供数据的服务器的响应中。答案显示了如何在 ASP.NET 中设置此类标头。

您可以在此处阅读有关用于缓存数据的 HTTP 标头的更多信息。答案与前面引用的内容一起提供了一些与 jqGrid 和 jQuery.ajax 结合起来很有趣的细节。