关于jqGrid的multiselect,multiboxonly,multikey shift 多选

今天又解决了个大难题,不知道用jqGrid的朋友遇到过没有,当我们设置multiselect为true时,选择任何的单元格,都会选中该行。万一设置了单元格编辑功能,岂不是每次都要取消选中的行?由于查看国内的网站,发现仅仅都是介绍了jqGrid的multiselect,multiboxonly,multikey的用法,并没有一些问题的解决方法,后来终于在国外网站上发现解决该问题的方法( http://stackoverflow.com/questions/7627512/jqgrid-multiselect-box), http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithMultiselection.htm是其效果

其代码为

[javascript] view plain copy print ?
  1. beforeSelectRow: function (rowid, e) { 
  2.     var $myGrid = $(this), 
  3.         i = $.jgrid.getCellIndex($(e.target).closest('td')[0]), 
  4.         cm = $myGrid.jqGrid('getGridParam','colModel'); 
  5.     return (cm[i].name ==='cb'); 

如果不需要复选框可以再jqgrid加载完的事件中加$("#mygrid").jqGrid('hideCol','cb');

另外我在国外网站上,已介绍了multiboxonly在3.6以后的版本中已没有介绍的那种功能,在3.4的版本中是能实现的(其介绍的链接为http://www.trirand.com/blog/?page_id=393/bugs/multiboxonly-property-bug/),所以3.6以后要实现所介绍的功能只能用以上的方法实现了

由于我的项目需要用到快捷键选取多行,经过设置multiselect:true,multikey:‘ctrlKey’,发现不能通过ctrl多行选择,后来发现,是由于我有上面贴的js,所以选择不了。删除上面那段js,能正常选择行,但同时也发现了另一个问题,选择checkbox后无效,又是个纠结的问题,只能通过谷歌的关键字去国外网站搜索,最后在https://github.com/gregorymostizky/jqGrid/commit/48121b4a4a31d2654e4272cdab317c067a9dc62e#diff-0中修改jqgrid的源代码解决了这个问题

特此分享以上问题的解决方法

另保存http://www.trirand.com/blog/?page_id=393/help/multiselect-with-shift-to-emulate-the-same-behaviour-as-in-the-file-explorer/,此方案用于快捷键选择多行,按住快捷键,选择第一行,再选择第10行,那中间8行会全部选中,给需要的人

总结,国外的牛人也很多,我还真的只是个码农

你可能感兴趣的:(关于jqGrid的multiselect,multiboxonly,multikey shift 多选)