本文介绍解决 jqgrid 在启用 toolbar search 后调用 `reloadgrid()` 导致数据源被意外截断的问题:通过手动清除搜索状态并重置过滤器,确保后续搜索始终基于原始全量数据源。
在使用 jqGrid 的 Toolbar Search(工具栏搜索)功能时,一个常见但容易被忽视的陷阱是:当用户输入搜索文本并触发筛选后,jqGrid 内部会缓存当前的过滤条件,并在后续 reloadGrid() 调用中默认复用该过滤上下文——即使你已更新了 url 或 datatype。这导致看似“刷新”的网格,实际只对上一次筛选后的子集(如 26 条)重新请求,而非原始全量数据(如 100 条),从而造成搜索范围持续收缩。
根本原因在于:reloadGrid() 不会自动重置 Toolbar 的搜索状态。它仅根据当前 postData(含已应用的搜索参数)发起新请求,而这些参数仍保留着上次 filterToolbar() 所生成的过滤条件。
✅ 正确做法是在调用 reloadGrid() 前,显式清除工具栏过滤器状态: