jqGrid中section_id变量在navgrid新增操作editData中丢失值求助
我来帮你搞定这个jqGrid里变量值丢失的问题!
问题根源
你遇到的情况很典型:navgrid的editData是在网格初始化阶段就被定义的,这时候section_id可能还没被用户选中行赋值,或者因为作用域绑定的原因,它引用的是初始化时的变量空值,而非用户选中行后更新的最新值。所以触发新增操作时,自然拿不到正确的section_id了。
解决方案
核心思路是让editData里的section_id值动态实时获取,而不是直接绑定初始化时的静态变量。我们可以把editData中对应的值改成一个函数,每次调用新增操作时,这个函数会返回当前最新的section_id值。
代码示例
假设你原来的details网格navgrid配置是这样的:
jQuery("#details").jqGrid('navGrid', '#pager_det', { edit: false, add: true, del: false }, {}, // 编辑配置项 { // 新增操作配置 editData: { section_id: section_id // 这里只会取初始化时的空值 } }, {} // 删除配置项 );
把它改成下面这样即可解决问题:
jQuery("#details").jqGrid('navGrid', '#pager_det', { edit: false, add: true, del: false }, {}, // 编辑配置项 { // 新增操作配置 editData: { section_id: function() { return section_id; // 每次触发新增时,实时获取最新选中的ID } } }, {} // 删除配置项 );
额外注意点
- 确保
section_id是全局变量(或者在editData的函数作用域内可以访问到),如果是局部变量,需要用闭包包裹来保留作用域。 - 如果仍有问题,可以检查是否存在变量名冲突,比如其他代码块也定义了
section_id导致值被覆盖。
内容的提问来源于stack exchange,提问作者Mariano
相关产品推荐
相关产品推荐

