点击编辑按钮后如何重新加载jqGrid显示指定客户关联数据?
问题分析与解决
你的问题出在点击编辑按钮后,给第二个jqGrid设置URL时没有传递必要参数,服务器无法识别要返回哪个客户的产品数据,导致Grid无法展示对应内容。
核心问题点
- 初始化第二个Grid时,URL包含
?GetProductGrid=1参数用来标识获取产品网格数据,但点击编辑后重置URL时只保留了基础路径,丢失了该关键参数。 - 没有将当前编辑的
customerID传递给服务器,服务器无法筛选出对应客户的产品数据。
修复步骤
- 补充URL必要参数:在设置Grid参数时,把
GetProductGrid=1和当前的customerID都添加到URL中,确保服务器能获取到正确的查询条件。 - 优化Grid重载逻辑:重载Grid时指定从第一页加载,同时明确设置
datatype: 'json'避免缓存干扰。
修改后的editCustomerRecord函数代码:
function editCustomerRecord(id) { event.preventDefault(); customerID = id; $.ajax({ type: 'GET', url: 'JHandler/Dashboard.ashx?EditCustomer=1' + '&customerID=' + customerID, success: function (data) { var allData = data; addNewRecord(); document.getElementById('btnSave').value = "Update"; customerID = allData[0]; document.getElementById('cName').value = allData[1]; document.getElementById('cAddress').value = allData[2]; document.getElementById('cContact').value = allData[3]; // 修正URL,添加必要参数 $('#tblProductGridID').jqGrid('setGridParam', { url: 'JHandler/Dashboard.ashx?GetProductGrid=1&customerID=' + customerID, datatype: 'json' // 明确数据类型,避免缓存导致的旧数据问题 }); // 重载Grid,从第一页开始加载 $('#tblProductGridID').trigger("reloadGrid", [{ page: 1 }]); }, error: function () { toastr.error("Error occured", "Edit Error", { timeout: 3000 }); } }); }
额外检查点
- 确认服务器端
Dashboard.ashx的GetProductGrid分支逻辑,是否正确接收并使用customerID参数筛选对应客户的产品数据。 - 可以通过浏览器开发者工具的网络面板,查看点击编辑后第二个Grid的请求URL是否包含正确的
customerID,以及服务器返回的JSON数据是否符合jqGrid的格式要求。
内容的提问来源于stack exchange,提问作者Saad Bajwa
相关产品推荐
相关产品推荐

