找回密码
 立即注册

QQ登录

只需一步,快速开始

肖小云
注册会员   /  发表于:2019-9-9 11:55  /   查看:3485  /  回复:3
本帖最后由 肖小云 于 2019-9-9 11:59 编辑

如题,现在有一个demo用的是SelectionChanged的事件,但是有一个bug是插入一行的时候再点击就会出现2行变颜色的情况,请问应该如何解决呢? 1.png 2.png
PS:附带demo请下载
  1. <html>

  2. <head>
  3.     <meta charset="utf-8" />
  4.     <!-- disable IE compatible view -->
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6.     <meta name="spreadjs culture" content="zh-cn" />
  7.     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
  8.     <title>SpreadJS定位列</title>
  9.     <!-- CDN Reference     -->
  10.     <link rel="icon" type="image/png" href="https://demo.grapecity.com.cn/SpreadJS/TutorialSample/icon.ico" />
  11.     <link rel=" stylesheet" type="text/css" href="https://cdn.grapecity.com.cn/spreadjs/css/basscss.min.css" />
  12.     <link rel="stylesheet" type="text/css" href="https://cdn.grapecity.com.cn/spreadjs/css/gc.spread.sheets.excel2013white.12.0.6.css" />
  13.     <script type="text/javascript" src="https://cdn.grapecity.com.cn/spreadjs/scripts/gc.spread.sheets.all.12.0.6.min.js"></script>
  14.     <script type="text/javascript" src="https://cdn.grapecity.com.cn/spreadjs/scripts/resources/zh/gc.spread.sheets.resources.zh.12.0.6.min.js"></script>
  15.     <script type="text/javascript" src="https://cdn.grapecity.com.cn/spreadjs/scripts/jquery-1.11.1.min.js"></script>
  16.     <style>
  17.         body {
  18.             background: rgb(250, 250, 250);
  19.             color: #333;
  20.         }
  21.         
  22.         #ss {
  23.             border: 1px #ccc solid;
  24.         }
  25.         
  26.         .container {
  27.             width: 60%;
  28.             background: rgb(250, 250, 250);
  29.             margin: 0 auto;
  30.             height: 480px;
  31.         }
  32.         
  33.         .full-height {
  34.             height: 100%;
  35.         }
  36.     </style>
  37. </head>

  38. <body>

  39.     <div id="ss"></div>

  40.     <script>
  41.         var lastRow = 0;
  42.         var spreadNS = GC.Spread.Sheets;
  43.         var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  44.         var customers = [{
  45.             ID: 0,
  46.             Name: 'A',
  47.             Info1: 'Info0'
  48.         }, {
  49.             ID: 1,
  50.             Name: 'B',
  51.             Info1: 'Info1'
  52.         }, {
  53.             ID: 2,
  54.             Name: 'C',
  55.             Info1: 'Info2'
  56.         }];
  57.         var sheet = spread.getActiveSheet();
  58.         sheet.setDataSource(customers);
  59.         // sheet.bindColumns(colInfos);
  60.         sheet.bind(GC.Spread.Sheets.Events.CellClick, function(e, args) {})
  61.         sheet.bind(GC.Spread.Sheets.Events.SelectionChanged, function(e, args) {
  62.             console.log(args)
  63.                 // 绑定行变化颜色跟着变化
  64.             var sheet = args.sheet;
  65.             var col = args.newSelections[0].col;
  66.             var row = args.newSelections[0].row;
  67.             var value = sheet.getText(row, col);
  68.             lastRow = args.oldSelections[0].row;
  69.             sheet.getRange(lastRow, -1, 1, -1).backColor(undefined);
  70.             sheet.getRange(row, -1, 1, -1).backColor("lightgreen");
  71.         })
  72.     </script>
  73. </body>

  74. </html>
复制代码





3 个回复

倒序浏览
Fiooona
论坛元老   /  发表于:2019-9-9 17:51:53
沙发
GIF.gif
您好可以再描述下您是怎么操作的吗? 我按上面的操作并没有复现问题
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
肖小云
注册会员   /  发表于:2019-9-12 09:22:33
板凳
Fiooona 发表于 2019-9-9 17:51
您好可以再描述下您是怎么操作的吗? 我按上面的操作并没有复现问题

您好,直接插入一行然后鼠标点到插入行的位置的时候会发生的情况
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2019-9-12 11:25:06
地板
这个问题的原因是由于新增行后并没有改变SelectionChanged事件的args.oldSelections中的索引值,解决这个问题可以参考下列代码:
  1.   sheet.bind(GC.Spread.Sheets.Events.SelectionChanged, function(e, args) {
  2.             console.log(args)
  3.                 // 绑定行变化颜色跟着变化
  4.             var sheet = args.sheet;
  5.             var col = args.newSelections[0].col;
  6.             var row = args.newSelections[0].row;
  7.             var value = sheet.getText(row, col);
  8.             lastRow = args.oldSelections[0].row;
  9.             for(var i = 0;i<sheet.getRowCount();i++){
  10.                 sheet.getRange(i, -1, 1, -1).backColor(undefined);
  11.             }
  12.             sheet.getRange(row, -1, 1, -1).backColor("lightgreen");
  13.         })
复制代码
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部