项目中用到的前端组件是jqgrid,有一个需求是根据扫描的物料将table中的行选中,jqgrid中选中的函数如下:
$("#datagrid").jqGrid('setSelection',rowid);
需求如下:
页面现有table两行,行A,行B,五个条码,三个对应行A,两个对应行B,随机扫描条码,扫描属于行A的条码,行A被选中,扫描属于行B的条码,行B被选中。
遇到的问题:
实现过程中出现了问题,条码1、条码2都属于行B,扫描条码1后调用选中函数,行B被选中,再次扫描条码2调用选中函数,行B取消选中。
解决方案:
设置一个全局集合,将选中的rowid存入集合,如果存在,则不调用选中函数,如果不存在,再调用选中函数,伪代码如下:
// 全局变量 存放已经选中的rowid
var idList = new Array();
function doSelect(rowid){
// 选中标记 默认没有选中
var selectedFlag = false;
// 遍历已存放的rowid
idList.foreach(function(one){
// 如果匹配 代表已经选中了
if(rowid == one){
selectedFlag = true;
}
});
// 如果没有选中 则执行函数 如果选中了 则不执行函数
if(!selectedFlag){
$("#datagrid").jqGrid('setSelection',rowid);
}
}