首页新闻找找看学习计划

easyui datagrid getSelections和idField

0
悬赏园豆:20 [待解决问题]

在使用easyui的datagrid时有以下操作,在行右键事件onRowContextMenu里,每次右键获取选中的行 getSelections 对其进行操作,可是出现第一次加载时右键能取到选中行,之后的右键通过getSelections都获取不到选中行,页面的选中状态还在,通过查看easyUI源发发现以下代码:
getSelections:function(jq){
return _7e2(jq[0]);
}

function _7e2(_7e3){
var _7e4=$.data(_7e3,"datagrid");
var opts=_7e4.options;
var data=_7e4.data;
if(opts.idField){
return _7e4.selectedRows;
}else{
var rows=[];
opts.finder.getTr(_7e3,"","selected",2).each(function(){
rows.push(opts.finder.getRow(_7e3,$(this)));
});
return rows;
}
};
怀疑是idField影响了获取选中行,把if(opts.idField)判断去掉确实能取到行,但感觉不是最好的解决办法,也不知道哪里影响到了selectedRows里的数据,请问有解决的办法么????
以下是声明datagrid的代码:
fit: true,
fitColumns: true,
view: scrollview,
singleSelect: false,
border: false,
autoRowHeight: true,
remoteSort: false,
idField: 'vehicleId',
ctrlSelect: true,
pageSize: 30,

扯。的主页 扯。 | 初学一级 | 园豆:190
提问于:2018-12-04 14:16

问题已解决,不是easyui的问题,是我自己其他部分代码的问题

扯。 1年前
< >
分享
所有回答(2)
0

easyui有些版本的源码确实是存在问题的,所以你改了源码没有产生其他问题是可以的。我前段时间也遇到过类似的问题,我当时就是改了好几处源码才解决的。

record_world | 园豆:154 (初学一级) | 2018-12-04 16:42

if(opts.idField)判断去掉就是有问题,在按shift建进行全选的时候,getSelections获取到的数据是错的,你具体改了哪些?

支持(0) 反对(0) 扯。 | 园豆:190 (初学一级) | 2018-12-04 17:00

@扯。: 我遇到的问题跟你的不一样,你要全选可以直接在列表头上加一个全选实现啊,为什么还要shift那么麻烦呢

支持(0) 反对(0) record_world | 园豆:154 (初学一级) | 2018-12-04 17:05

@record_world: 表头加全选又会引发另一个问题,我是用 view: scrollview进行分页,点全选只能选中当前页

支持(0) 反对(0) 扯。 | 园豆:190 (初学一级) | 2018-12-04 17:10

@扯。: 你要想全部选中可以把这个全选当做一个参数传到后台去处理呀,而且就算你不改idfield,貌似全选也只是当前页面显示的行项目吧

支持(0) 反对(0) record_world | 园豆:154 (初学一级) | 2018-12-04 17:13

@record_world: 问题解决了,不是easyUI的问题,是我把selectRows这个对象赋值给了另一个对象A,我用完A之后就把它清空了,导致selectRows也被清空了,还是感谢你的回答。

支持(0) 反对(0) 扯。 | 园豆:190 (初学一级) | 2018-12-04 18:16
0

问题解决了,不是easyUI的问题,是我把selectRows这个对象赋值给了另一个对象A,我用完A之后就把它清空了,导致selectRows也被清空了,还是感谢你的回答。

扯。 | 园豆:190 (初学一级) | 2018-12-17 11:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册