找回密码
 立即注册

QQ登录

只需一步,快速开始

[已处理] 一个奇怪的问题

chcchb
论坛元老   /  发表于:2011-12-27 16:11  /   查看:6346  /  回复:7
在spread中选中后,通过asp.net的按钮控件来删除选中行,在后台的函数中调用页面的js来执行所有checkbox为非选中状态
  1. var spread;
  2. spread = document.getElementById("FpSpread1");
  3. var rowCount = spread.GetRowCount();
复制代码
这里的spread能取到,断点调试时对应的id也是正常的,就是总行数取不到。

另外的全选啊,单选里都有用到“GetRowCount()”,都没出问题啊,奇怪了

7 个回复

倒序浏览
chcchb
论坛元老   /  发表于:2011-12-27 17:47:00
沙发
下班走人前再顶下。。希望明天能有结果
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-27 17:53:00
板凳

回复 2# chcchb 的帖子

呵呵,不好意思,没能重现您的问题,如果其他位置调用 GetRowCount() 没有出问题,说明您的使用方法是正确的。所以,需要您发个重现问题的 Demo 到论坛来,这样我们可以进行调试。感谢您的配合~
回复 使用道具 举报
chcchb
论坛元老   /  发表于:2011-12-28 10:12:00
地板
是不是存在这种情况,页面的spread中的内容还没加载完,这时调用GetRowCount()才出错啊?
回复 使用道具 举报
chcchb
论坛元老   /  发表于:2011-12-28 10:16:00
5#
我换了中思路,把后台调用的js给去掉了,换成后台设置checkbox,貌似还是不行。
  1. For iRowCount As Integer = 0 To FpSpread1.Sheets(0).Rows.Count - 1
  2.       FpSpread1.Sheets(0).SetValue(iRowCount, 0, "false")
  3. Next
复制代码
原先有3行,比如选中第二行进行删除操作,能正常删除,可是得到的2行数据里第2行的checkbox还是选中状态。。。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-28 10:50:00
6#

回复 4# chcchb 的帖子

chcchb 你好,

1.不知道你是在什么时机下调用的 GetRowCount() 方法,程序启动后,先执行后台代码,再执行前台代码。所以,前台代码调用时,Spread 已经加载完毕。

2.下面是根据你的描述进行的测试:
前台:我在 window.onload 中执行可以拿到 RowCount :

  1.     <script type="text/javascript">
  2.         window.onload = function () {
  3.             var spread;
  4.             spread = document.getElementById("FpSpread1");
  5.             var rowCount = spread.GetRowCount();
  6.         }
  7.     </script>
复制代码
后台:
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             FarPoint.Web.Spread.CheckBoxCellType checkbox = new FarPoint.Web.Spread.CheckBoxCellType();
  4.             this.FpSpread1.ActiveSheetView.Columns[0].CellType = checkbox;
  5.             for (int i = 0; i < this.FpSpread1.ActiveSheetView.RowCount ; i++)
  6.             {
  7.                 FpSpread1.ActiveSheetView.SetValue(i, 0, true);
  8.             }
  9.         }

  10.         protected void Button1_Click(object sender, EventArgs e)
  11.         {
  12.             this.FpSpread1.ActiveSheetView.RemoveRows(this.FpSpread1.ActiveSheetView.ActiveRow, 1);
  13.             for (int i = 0; i < this.FpSpread1.ActiveSheetView.RowCount; i++)
  14.             {
  15.                 FpSpread1.ActiveSheetView.SetValue(i, 0, false);
  16.             }
  17.         }
复制代码
程序没有出现描述的问题,如果重现有遗漏,还请你指出来。
回复 使用道具 举报
chcchb
论坛元老   /  发表于:2011-12-28 12:16:00
7#
我最后还是换成后台调前台js的方法。
不过调用前加了setTimeout 就可以了
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-12-28 14:28:00
8#

回复 7# chcchb 的帖子

好的,感谢你把解决方案反馈给我们~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部