找回密码
 立即注册

QQ登录

只需一步,快速开始

ttflx
高级会员   /  发表于:2012-11-8 14:10  /   查看:7149  /  回复:5
使用版本:spread for asp.net 5.0(日文版)

现象:
1、在IE9下,在SPREAD表格内可以按回车跳到下一个单元格,用脚本如何实现啊,不知道绑定什么事件

2、如果遇到只读的单元格,按回车不跳进去,自动跳到下一个可编辑的单元格。


谢谢了,我刚开始用,望指教!

5 个回复

倒序浏览
ttflx
高级会员   /  发表于:2012-11-8 14:52:00
沙发
我将下面的代码绑定到了spdList1.onkeydown = spreadKeyDown;事件中
能在一行中跳转下一个单元格,
那如何取得这个spread的所有单元格,以便条跳到下一行阿!
  1. function spreadKeyDown() {
  2.             if (event.keyCode == 13) {
  3.                 alert(this.ColumnCount);
  4.                 var activecol = this.ActiveCol;
  5.                 var activerow = this.ActiveRow;
  6.                 //alert(this.id);
  7.                 this.SetActiveCell(activerow, activecol +1);
  8.             }
  9.         }
复制代码
回复 使用道具 举报
ttflx
高级会员   /  发表于:2012-11-8 15:46:00
板凳
  1.         //按回车,切换到下一个单元格
  2.         function spreadKeyDown() {
  3.             if (event.keyCode == 13) {
  4.                 var activecol = this.ActiveCol;
  5.                 var activerow = this.ActiveRow;
  6.                 if (activecol < this.GetColCount() - 2
  7.                     && this.Cells(activerow, activecol + 1).GetCellType() == 'LabelCellType') {
  8.                     activecol++;
  9.                 }
  10.                 if (activecol < this.GetColCount() - 1) {
  11.                     this.SetActiveCell(activerow, activecol + 1);
  12.                 } else {
  13.                     this.SetActiveCell(activerow + 1, 0);
  14.                 }
  15.             }
  16.         }
复制代码

但是如何遇到了连续的 只读列该怎么办啊!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-8 17:48:00
地板
ttflx 你好

实现非常感谢你使用葡萄城控件产品, GCDN 主要负责葡萄城控件中英文版本产品的技术支持,日文版本相关的问题可以在这里发帖提问:https://www.grapecity.com/japan/support/

你的这个需求只能通过客户端的JS方法来实现,通过判断单元格的属性来决定该单元格是否可以获得焦点
回复 使用道具 举报
ttflx
高级会员   /  发表于:2012-11-15 18:46:00
5#
  1. GridUtil.CellKeyDown = function(spdID) {
  2.         var spd = document.getElementById(spdID);
  3.         if (event.keyCode == 13) {
  4.             var colCount = spd.GetColCount();
  5.             var rowCount = spd.GetRowCount();
  6.             var activecol = spd.ActiveCol;
  7.             var activerow = spd.ActiveRow;
  8.             var tempACol = activecol;
  9.             var tempARow = activerow;
  10.             var tempRowAdd = 0;
  11.             var tempWhiteCol = -1;
  12.             var isCheckWhite = false;
  13.             if (rowCount <= 0) {
  14.                 //                var e = event ? event : window.event;
  15.                 //                try { e.keyCode = 9; } catch (ex) { }
  16.                 return;
  17.             }
  18.             activecol++;
  19.             if (activecol >= colCount) {
  20.                 activerow++;
  21.                 activecol = 0;
  22.             }
  23.             if (activerow >= rowCount) {
  24.                 activerow = 0;
  25.             }
  26.             if (activecol < colCount) {
  27.                 while (activecol < colCount) {
  28.                     if (spd.Cells(activerow, activecol).getAttribute("FpCellType") == 'readonly') {
  29.                         if (spd.Cells(activerow, activecol).GetBackColor() == '#f0f0f0') {
  30.                             isCheckWhite = true;
  31.                             tempWhiteCol = -1;
  32.                         } else if (isCheckWhite) {
  33.                             tempWhiteCol = activecol;
  34.                             isCheckWhite = false;
  35.                         }
  36.                         activecol++;
  37.                     } else {
  38.                         break;
  39.                     }
  40.                     if (activecol >= colCount) {
  41.                         activerow++;
  42.                         activecol = 0;
  43.                         tempRowAdd++;
  44.                     }
  45.                     if (activerow >= rowCount) {
  46.                         activerow = 0;
  47.                     }
  48.                     if (tempRowAdd > 1) {
  49.                         activecol = tempACol + 1;
  50.                         activerow = tempARow;
  51.                         if (activecol < colCount &amp;&amp; spd.Cells(activerow, activecol).GetBackColor() == '#f0f0f0' &amp;&amp; tempWhiteCol > 0) {
  52.                             activecol = tempWhiteCol;
  53.                         }
  54.                         break;
  55.                     }
  56.                 }
  57.             }
  58.             spd.EndEdit();
  59.             if (activecol < colCount) {
  60.                 spd.SetActiveCell(activerow, activecol);
  61.             } else {
  62.                 spd.SetActiveCell(activerow + 1, 0);
  63.             }
  64.         }
  65.     }   
复制代码

实现了,感谢大家!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-11-16 09:53:00
6#
回复 5楼ttflx的帖子

感谢把解决方法分享给我们。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部