起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3629|回复: 7

[结贴] 如何前端grid通过shif或ctrl键控制多行选中和批量修改

[复制链接]

6

主题

10

帖子

22

积分

新手上路

Rank: 1

积分
22
QQ
发表于 2017-3-11 07:24:25 | 显示全部楼层 |阅读模式
在BEX5 3.5版本中,针对表格grid如何实现通过shif或ctrl键控制多行选中和批量修改,即假如有10行数据,前面设置checkbox复选框,首先点击第一行,前面复选框选中,且第一行背景色突出显示(黑色或深色),当按住shift键,并点击第10行时,则1-10行数据的复选框均选中,且背景色一致突出显示(黑色或深色),当按住ctrl键,通过鼠标单击选中1,2,3,5,7,8行时,则1,2,3,5,7,8被选中;
当选择好对应行后,针对某一行的数据进行修改,其他被选中的行同步修改处理。
请专家帮忙提此功能支持,静候佳音!

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35938
发表于 2017-3-13 09:17:18 | 显示全部楼层
自己在页面上监听键盘事件,然后在事件中判断grid行的选中状态,自己设置是否选中
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

1

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
QQ
发表于 2017-3-13 09:59:22 | 显示全部楼层
本帖最后由 pengjinhuisir1 于 2017-3-13 10:01 编辑
jishuang 发表于 2017-3-13 09:17
自己在页面上监听键盘事件,然后在事件中判断grid行的选中状态,自己设置是否选中
...

如果我想做成平台支持(我们希望您提供思路,我们来具体实现),而不是每个页面去写,这样过于麻烦!特别是修改某行的值,其他选中的列批量修改;还有一个问题就是选中后,统一背景色,目前只支持当前行选中。这个属于项目上的需求,希望贵公司能够提供一定技术支持。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35938
发表于 2017-3-13 11:20:49 | 显示全部楼层
可以参考jquery grid的实现,需要自己修改平台的组件
http://www.myexception.cn/web/1693002.html

修改的时候其他的也修改,可以在valueChanged中自己获取选中的行去处理

设置颜色可以通过多选给行上加样式,自己控制样式
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

1

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
QQ
发表于 2017-3-13 14:23:13 | 显示全部楼层
jishuang 发表于 2017-3-13 11:20
可以参考jquery grid的实现,需要自己修改平台的组件
http://www.myexception.cn/web/1693002.html

平台组建封装过于复杂,能否提供具体的代码实现啊?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35938
发表于 2017-3-13 15:18:09 | 显示全部楼层
需要自己实现,没有具体的显示代码
可以参考多选的实现
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

1

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
QQ
发表于 2017-3-14 15:43:30 | 显示全部楼层
jishuang 发表于 2017-3-13 15:18
需要自己实现,没有具体的显示代码
可以参考多选的实现

beforeSelectRow: function (rowid, e) {
    var $this = $(this), rows = this.rows,
        // get id of the previous selected row
        startId = $this.jqGrid('getGridParam', 'selrow'),
        startRow, endRow, iStart, iEnd, i, rowidIndex;

    if (!e.ctrlKey && !e.shiftKey) {
        $this.jqGrid('resetSelection');
    } else if (startId && e.shiftKey) {
        $this.jqGrid('resetSelection');

        // get DOM elements of the previous selected and the currect selected rows
        startRow = rows.namedItem(startId);
        endRow = rows.namedItem(rowid);
        if (startRow && endRow) {
            // get min and max from the indexes of the previous selected
            // and the currect selected rows
            iStart = Math.min(startRow.rowIndex, endRow.rowIndex);
            rowidIndex = endRow.rowIndex;
            iEnd = Math.max(startRow.rowIndex, rowidIndex);
            for (i = iStart; i <= iEnd; i++) {
                // the row with rowid will be selected by jqGrid, so:
                if (i != rowidIndex) {
                    $this.jqGrid('setSelection', rows.id, false);
                }
            }
        }

        // clear text selection
        if(document.selection && document.selection.empty) {
            document.selection.empty();
        } else if(window.getSelection) {
            window.getSelection().removeAllRanges();
        }
    }
    return true;
}

您好,这是网上关于jqgrid多选实现方案,但是经过研究jggrid.src.js,不知道将此段代码嵌套在在jggrid.src.js的哪行代码处。请指点...
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35938
发表于 2017-3-14 16:51:38 | 显示全部楼层
1.首先要在平台的grid.js中处理去接管快捷的设置
2.beforeSelectRow可以在grid.js中处理
  或者到jggrid.src.js中到beforeSelectRow事件相关的处理代码
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-11 18:06 , Processed in 0.096477 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表