首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetSelectedRange Spread.NET javascript问题

SetSelectedRange Spread.NET javascript问题
EN

Stack Overflow用户
提问于 2012-09-29 10:37:48
回答 1查看 982关注 0票数 1

我正在尝试添加功能到Spread.NET控件,它将允许按住Shift键并单击以在ASP中选择单元格范围。我正在创建在执行时调用selectRange函数的事件onActiveCellChanged

代码语言:javascript
复制
   var shiftPressed = false;
   var newSelect = true;

   window.pageLoad = function init() {
       var ss = document.getElementById('<%=FpSpread1.ClientID %>');

       if (ss.addEventListener != null) {
           ss.addEventListener("ActiveCellChanged", selectRange(), false);
       } else if (ss.attachEvent != null) {
           ss.attachEvent("ActiveCellChanged", selectRange());
       }
       else {
           FpSpread1.onActiveCellChanged = selectRange;
       }
   }

下面是selectRange函数。

代码语言:javascript
复制
        function selectRange() {
            var ss = document.getElementById('<%=FpSpread1.ClientID %>');
            var swap;

            if (shiftPressed == true) {
                var initRow = document.getElementById('RowCoord').value;
                var initCol = document.getElementById('ColCoord').value;
                var SecRow = getRow();
                var SecCol = getCol();
                newSelect = false;

                var rCount = Math.abs(SecRow - initRow) + 1;
                var cCount = Math.abs(SecCol - initCol) + 1;

                if (initRow > SecRow)
                    initRow = SecRow;

                if (initCol > SecCol)
                    initCol = SecCol;

                //alert(initRow + ' ' + initCol);
                alert(initRow + ' ' + initCol + ' ' + rCount + ' ' + cCount);
                ss.SetSelectedRange(initRow, initCol, rCount, cCount);

            }
            else {
                document.getElementById('RowCoord').value = 0;
                document.getElementById('ColCoord').value = 0;
                newSelect = true;
            }
        }

这就是我确定shift是否被按住的方法。

代码语言:javascript
复制
        function aKeyDown(event) {

            if (event.keyCode == 16) {

                shiftPressed = true;
                var col = getCol();
                var row = getRow();

                if (newSelect) {
                    document.getElementById('RowCoord').value = row;
                    document.getElementById('ColCoord').value = col;
                }
            }
        }

        function aKeyUp(event) {

            if (event.keyCode == 16) {
                shiftPressed = false;
            }
        }

        function getRow() {
            var ss = document.getElementById('<%=FpSpread1.ClientID %>');
            ret = ss.ActiveRow;

            if (ret == undefined)
                ret = ss.GetActiveRow;

            return ret;
        }

        function getCol() {
            var ss = document.getElementById('<%=FpSpread1.ClientID %>');
            ret = ss.ActiveCol;

            if (ret == undefined)
                ret = ss.GetActiveCol;

            return ret;
        }   

如果我的初始单元格是a,1,则select range函数中的SetSelectedRange将起作用。但是,如果它是任何其他单元格,它将选择整个行和列。

这是我的<div>标签:

代码语言:javascript
复制
<FarPoint:FpSpread onkeydown="aKeyDown(event)" onkeyup="aKeyUp(event)" ID="FpSpread1"...

在图1中,我的初始单元格是(a,3),我按住shift键并单击(b,4)

在图2中,它起作用了。只要我从单元格(a,1)开始

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-16 10:06:22

我需要对行和列值执行parseInt操作。

代码语言:javascript
复制
function getRow() {
        var ss = document.getElementById(spd);
        ret = ss.ActiveRow;

        if (ret == undefined)
            ret = ss.GetActiveRow();

        return parseInt(ret);
    }

    function getCol() {
        var ss = document.getElementById(spd);
        ret = ss.ActiveCol;

        if (ret == undefined)
            ret = ss.GetActiveCol();

        return parseInt(ret);
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12649473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档