找回密码
 立即注册

QQ登录

只需一步,快速开始

dxhshitc

论坛元老

27

主题

75

帖子

1万

积分

论坛元老

积分
16235

活字格认证

QQ
dxhshitc
论坛元老   /  发表于:2012-10-16 17:09  /   查看:6381  /  回复:3
当读取的文件中隐藏行,或者后台隐藏了行之后,前台读取到的rouindex有问题,正确的rowindex应该如何读取?
没有隐藏前:
p3.PNG
隐藏后:(隐藏了红色D的那一行)然后显示出来的情况是rowindex由A8编程了A9.A9是隐藏的那一行的单元格号
p1.PNG
p2.PNG

3 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-10-16 18:47:00
沙发
回复 1楼dxhshitc的帖子

隐藏了 Spread 中某一行后,从HTML  source 文件中查看,这行的信息完全被移除了。所以无法是取到的 rowindex 不改变。
请问楼主想实现什么 CASE 呢?
回复 使用道具 举报
dxhshitc
论坛元老   /  发表于:2012-10-16 21:14:00
板凳
回复 2楼iceman的帖子

我想要实现的是当我选中一个单元格,键入”=“ 的时候,在点击其他单元格的时候直接在等号后面添加那个单元格,例如”=E5+E6“作为那个单元格的公式。我遇到的问题是当我输入”=“号之后点击单元格,理论上应该是输入”E5“但是由于那个单元格下面有一行被隐藏了,我获得的那个值变成了”E6“。
我是使用这个方法来获得index的:
if (document.all) {
            // IE
            var ac = ss.ActiveCol;
            var ar = ss.ActiveRow;
        }
var rowindex1 = ss.GetSheetRowIndex(ar+1);
var colindex1 = ss.GetSheetColIndex(ac);
var CoordonneColx = String.fromCharCode(parseInt(colindex1) + 97).toUpperCase();
var coordonnee =CoordonneColx +rowindex1 ;
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-10-17 12:27:00
地板
回复 3楼dxhshitc的帖子

仅就取隐藏行后的索引问题,可以通过以下方法处理:
把隐藏行索引通过 public 变量传到前台,再判断前台的当前单元格是否为受到隐藏行影响的单元格。进而取得正确的公式索引:
前台代码:

  1.     <script language="javascript" type="text/javascript" id="FpSpread1_Script0">
  2.                 function FpSpread1_ActiveCellChanged(event){
  3.                     //Add code to handle your event here.
  4.                     var ss;
  5.                     if (document.all) {
  6.                         // IE
  7.                         ss = this.document.getElementById("FpSpread1");
  8.                         var ac = ss.ActiveCol;
  9.                         var ar = ss.ActiveRow;
  10.                     }
  11.             var hiddenrowindex=<%=hiddenRowIndex %>;
  12.             var rowindex1;
  13.             if (hiddenrowindex!=0&amp;&amp;ar==hiddenrowindex-1) {
  14.                         rowindex1 = hiddenrowindex;
  15.             }
  16.             else {
  17.                         rowindex1 = ss.GetSheetRowIndex(ar + 1);
  18.             }
  19.                     var colindex1 = ss.GetSheetColIndex(ac);
  20.                     var CoordonneColx = String.fromCharCode(parseInt(colindex1) + 97).toUpperCase();
  21.                     var coordonnee = CoordonneColx + rowindex1;
  22.                 }
  23.     </script>
复制代码

后台代码:

  1. public partial class WebForm1 : System.Web.UI.Page
  2.     {
  3.         public int hiddenRowIndex;
  4.         protected void Page_Load(object sender, EventArgs e)
  5.         {
  6.             if (IsPostBack)
  7.             {
  8.                 return;
  9.             }
  10.             this.FpSpread1.Sheets[0].Rows.Count = 10;
  11.             this.FpSpread1.Sheets[0].Cells[0, 0].Value = 1;
  12.             this.FpSpread1.Sheets[0].Cells[1, 0].Value = 1;
  13.             this.FpSpread1.Sheets[0].Cells[2, 0].Formula= "A1+A2";
  14.         }

  15.         protected void Button1_Click(object sender, EventArgs e)
  16.         {
  17.             this.FpSpread1.Sheets[0].Rows[3].Visible = false;
  18.             hiddenRowIndex = 3;
  19.         }

  20.     }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部