找回密码
 立即注册

QQ登录

只需一步,快速开始

summonyyq

银牌会员

22

主题

69

帖子

3765

积分

银牌会员

积分
3765

活字格认证

summonyyq
银牌会员   /  发表于:2014-10-20 14:13  /   查看:10168  /  回复:10
现在想要实现 点击单元格,光标在spread的单元格中切换的功能(类似
Tab键)。
实现方式是通过callback在后台设定 ActiveRow和ActiveColumn。
但有个问题,callback方法中无法得到当前输入的值。

如下前台代码:
document.onkeydown = function (event) {
            var e = event || window.event || arguments.callee.caller.arguments[0];
            var spread = document.getElementById("spdList");

            if (e && e.keyCode == 13) {
                if (spread.ActiveRow + 1 == spread.RowCount && spread.GetActiveCol() == 1
                    && spread.GetValue(spread.GetActiveRow(), 0) != "") {
                    AddRow();
                } else {
                    var code = spread.GetValue(spread.GetActiveRow(), spread.GetActiveCol());
                    spread.CallBack("isEnter-" + code);
                }
            }
        };

10 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-10-20 19:15:00
沙发
回复 1楼summonyyq的帖子

请尝试在callback 之前调用,  FpSpread1.UpdatePostbackData() 和  FpSpread1.Update() 方法。
回复 使用道具 举报
summonyyq
银牌会员   /  发表于:2014-10-20 20:36:00
板凳
回复 2楼iceman的帖子

在前台绑定后还是不行
请确认附件代码(日语版本spread)。

WebApplication2.rar

20.45 KB, 下载次数: 567

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-21 18:27:00
地板
回复 3楼summonyyq的帖子

Demo 已经查收,调试后反馈给你结果。
回复 使用道具 举报
summonyyq
银牌会员   /  发表于:2014-10-22 18:51:00
5#
回复 4楼iceman的帖子

怎么样了,有结果了吗?
能知道 怎么在前台给单元格设置焦点也可以。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-23 14:40:00
6#
回复 5楼summonyyq的帖子

我这边是可以正常获取到的。如果您仅仅是希望切换活跃单元格,那不需要callback 到后台,可以通过前台接口实现。
前台设置快捷键代码:

  1. <SCRIPT language=javascript>
  2.    function setMap() {
  3.        var ss = document.getElementById("FpSpread1");
  4.        if (ss != null){
  5.           //IE9 or earlier
  6.          //ss.AddKeyMap(13,true,true,false,"this.MoveToLastColumn()");
  7.         ss.AddKeyMap(13,true,true,false,"element.MoveToLastColumn()");
  8.    }
  9. </SCRIPT>
复制代码


或者用 SetActiveCell 方法:
  1. <SCRIPT>
  2.   function moveSelection() {
  3.     FpSpread1.Copy(); // copies selection to Clipboard
  4.     FpSpread1.SetActiveCell(0,0); // goes to top of displayed sheet
  5.     FpSpread1.Paste(); // pastes selection
  6.   }
  7. </SCRIPT>
复制代码
回复 使用道具 举报
summonyyq
银牌会员   /  发表于:2014-10-23 18:43:00
7#
回复 6楼iceman的帖子

设置单元格类型Text,并且AllowWrap=false时,点回车调Callback的话,取不到值,不知道是不是bug。

我callback后台是要 在末尾添加空行,如果能在前台实现添加空行的话,也可以。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-24 18:45:00
8#
回复 7楼summonyyq的帖子

可以在后台通过以下方法设置单元格值:

  1. e.SheetView.Cells(e.SheetView.ActiveRow,e.SheetView.ActiveColumn).Text
复制代码
回复 使用道具 举报
summonyyq
银牌会员   /  发表于:2014-10-24 19:55:00
9#
回复 8楼iceman的帖子

我就是这么实现的,但他取得不了刚输入的值,还是点回车之前的值
回复 使用道具 举报
summonyyq
银牌会员   /  发表于:2014-10-27 11:08:00
10#
通过前台实现添加行,这个问题,已经解决,谢谢楼主。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部