找回密码
 立即注册

QQ登录

只需一步,快速开始

ilixiaojun

高级会员

12

主题

26

帖子

1312

积分

高级会员

积分
1312

活字格认证

ilixiaojun
高级会员   /  发表于:2012-5-25 14:23  /   查看:6341  /  回复:9
画面中选中某单元格,我想执行一个js方法,不知道Spread有没有这个事件,要是前台的,然后如何设置这个单元格是我想要的颜色。
谢谢!

9 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-5-25 14:38:00
沙发

回复 1# ilixiaojun 的帖子

ilixiaojun 你好,
可以触发 Spread 前台事件 ActiveCellChanged ,详细用法请参考帮助文档,测试代码:

  1.     <script language="javascript" type="text/javascript" id="FpSpread1_Script0">
  2.                 function FpSpread1_ActiveCellChanged(event){
  3.                     var activeCell = FpSpread1.GetCellByRowCol(FpSpread1.ActiveRow, FpSpread1.ActiveCol);
  4.                     activeCell.bgColor = "red";
  5.                 }
  6.         </script>
复制代码
回复 使用道具 举报
ilixiaojun
高级会员   /  发表于:2012-5-25 14:58:00
板凳

回复 2# iceman 的帖子

<script language="javascript" type="text/javascript" id="FpSpread1_Script0">
             function fp_Spread_ActiveCellChanged(event) {
                 var activeCell = fp_Spread.GetCellByRowCol(fp_Spread.ActiveRow, fp_Spread.ActiveCol);
           activeCell.bgColor = "red";
           alert(fp_Spread.ActiveRow + "行|" + fp_Spread.ActiveCol + "列");
        }
    </script>
     
<aspanel ID="panSpread" runat="server" GroupingText="测试报告">
    <FarPoint:FpSpread ID="fp_Spread" runat="server" BorderColor="Black" BorderStyle="Solid"
        BorderWidth="1px">
        <CommandBar BackColor="Control" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
            ButtonShadowColor="ControlDark">
        </CommandBar>
        <Sheets>
            <FarPoint:SheetView SheetName="Sheet1">
            </FarPoint:SheetView>
        </Sheets>
    </FarPoint:FpSpread>
</aspanel>
为什么执行不了fp_Spread_ActiveCellChanged这个js呢
回复 使用道具 举报
ilixiaojun
高级会员   /  发表于:2012-5-25 15:18:00
地板
  1. <script language="javascript" type="text/javascript" id="FpSpread1_Script0">
  2.     function fp_Spread_ActiveCellChanged(event)
  3.     {
  4.         var activeCell = fp_Spread.GetCellByRowCol(fp_Spread.ActiveRow, fp_Spread.ActiveCol);
  5.         activeCell.bgColor = "red";
  6.         alert(fp_Spread.ActiveRow + "行|" + fp_Spread.ActiveCol + "列");
  7.     }
  8.     </script>
  9.      
  10.     <FarPoint:FpSpread ID="fp_Spread" ActiveCellChanged="fp_Spread_ActiveCellChanged(this)" runat="server" BorderColor="Black" BorderStyle="Solid"
  11.         BorderWidth="1px">
  12.         <CommandBar BackColor="Control" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
  13.             ButtonShadowColor="ControlDark">
  14.         </CommandBar>
  15.         <Sheets>
  16.             <FarPoint:SheetView SheetName="Sheet1">
  17.             </FarPoint:SheetView>
  18.         </Sheets>
  19.     </FarPoint:FpSpread>
复制代码
执行不了上面的js,是版本问题吗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-5-25 15:23:00
5#
下面是我的测试 Demo ,正常执行:测试环境 VS 2010 &amp;&amp; Spread for .NET SP3
4589sec.zip (17.48 KB, 下载次数: 238)
回复 使用道具 举报
ilixiaojun
高级会员   /  发表于:2012-5-25 15:52:00
6#

回复 5# iceman 的帖子

经过测试,上面代码只能直接在画面中运行正常,但放入用户控件中,提示js错误,没有找到FpSpread1
回复 使用道具 举报
ilixiaojun
高级会员   /  发表于:2012-5-25 16:43:00
7#
我已经找到解决方案,
  1. /// <summary>
  2.         /// 当前光标所在Spread Sheet序号
  3.         /// </summary>
  4.         public int? SpreadCurrentSheetIndex
  5.         {
  6.             get { return this.FpSpread1.ActiveSheetViewIndex; }
  7.         }

  8.         /// <summary>
  9.         /// 当前光标所在Spread行号
  10.         /// </summary>
  11.         public int? SpreadCurrentRowIndex
  12.         {
  13.             get { return this.FpSpread1.ActiveSheetView.ActiveRow; }
  14.         }

  15.         /// <summary>
  16.         /// 当前光标所在Spread列号
  17.         /// </summary>
  18.         public int? SpreadCurrentColumnIndex
  19.         {
  20.             get { return this.FpSpread1.ActiveSheetView.ActiveColumn; }
  21.         }
复制代码

点击单元格换色,可以使用,而且每次点击单元格,不会提交后台,还是谢谢版主耐心简答!
  1. if (!IsPostBack)
  2.             {
  3.                 //循环设置选中单元格颜色
  4.                 for (int i = 0; i < this.FpSpread1.Sheets.Count;i++ )
  5.                 {
  6.                     this.FpSpread1.Sheets[i].SelectionBackColor = System.Drawing.Color.Red;
  7.                 }
  8.             }
复制代码
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-5-25 16:49:00
8#

回复 6# ilixiaojun 的帖子

1. 从安装的FpSpread目录中导入FpSpreadJsIntellisense.js文件。
2. 引用:<script src="FpSpreadJsIntellisense.js" type="text/javascript"></script>
3. 在另一<script></script>内写入:
<script language="javascript" type="text/javascript" id="FpSpread1_Script0">
            function fp_Spread_ActiveCellChanged(event) {
                var fp_Spread= FpSpread("fp_Spread");
                var activeCell = fp_Spread.GetCellByRowCol(fp_Spread.GetActiveRow(), fp_Spread.GetActiveCol());
                activeCell.bgColor = "red";
                alert(fp_Spread.GetActiveRow()+ "行|" + fp_Spread.GetActiveCol()+ "列");
            }
</script>
4.在<FarPoint:FpSpread></FarPoint:FpSpread>内写入:
<ClientEvents ActiveCellChanged=" fp_Spread_ActiveCellChanged" />
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-5-25 17:42:00
9#

回复 8# study1990 的帖子

:strong: 顶起
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-5-28 15:41:00
10#

回复 7# ilixiaojun 的帖子

用js执行快一些吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部