JQGrid在jQuery ui-tabs中无法隔离变更,编辑行时其他标签页网格同步更新如何解决
jqGrid多标签页网格数据隔离方案
- 配置
idPrefix避免行ID全局冲突
你在colModel中设置key: true的字段会被jqGrid作为行的全局DOM ID,不同标签页的行如果该字段值重复,会导致编辑操作误定位到其他标签页的同ID行。初始化每个网格时,给不同标签页的网格配置唯一的idPrefix参数即可解决,示例:// 标签页1的网格初始化配置 $('#grid-tab1').jqGrid({ idPrefix: 'tab1_', // 每个标签页前缀唯一 colModel: [ {name: 'yourKeyField', key: true, ...}, ... ], ... }) - 深拷贝数据源避免引用共享
如果初始化多个网格时直接复用同一个数据源数组,JavaScript的引用类型特性会导致修改任意网格的数据时,所有复用该数组的网格同步变动。初始化每个网格前对数据源做深拷贝即可:// 每个网格使用独立的数据源拷贝 const tabGridData = JSON.parse(JSON.stringify(originalData)) $('#grid-tab1').jqGrid({ data: tabGridData, ... }) - 显式指定操作的目标网格
自定义编辑逻辑时,直接通过对应标签页的网格ID指定操作对象,不要使用模糊的全局选择器:// 正确写法,指定操作当前标签页的网格 $('#current-tab-grid-id').jqGrid('editRow', rowId)
内容的提问来源于stack exchange,提问作者S.O.
相关产品推荐
相关产品推荐

