找回密码
 立即注册

QQ登录

只需一步,快速开始

dlerror
中级会员   /  发表于:2014-2-8 08:50  /   查看:14578  /  回复:14
使用版本是:SPREAD for ASP.NET 7.0
在修改某个单元格内容时,需要将该行最后一列的单元格赋值,当做标志位使用。最后一列的Locked = True。
由于数据量很大,使用了虚拟翻页。
JS代码如下:
function spdService_DataChanged(e) {
   
    var cell;
   
    cell = e.spread.GetCellByRowCol(e.row, 50);
    cell.removeAttribute("FpCellType");
    e.spread.SetValue(e.row, "99999", true);
    cell.setAttribute("FpCellType", "readonly");
   
}
在第一页时,JS的赋值方法可以正确的使用,但翻到第二页时,【cell.removeAttribute("FpCellType");】这句出错了,提示cell=null。
请问在使用虚拟翻页的情况下,我如何在JS中,对Locked = True的单元格赋值?

14 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2014-2-8 10:10:00
沙发
回复 1楼dlerror的帖子

从出错显示cell不存在,这个线索出发:
最快的办法是,打个断点调试一下:当翻到第二页时候,当前Sheet总Row、Column是多少。


  1. cell = e.spread.GetCellByRowCol(e.row, 50);
复制代码
回复 使用道具 举报
dlerror
中级会员   /  发表于:2014-2-8 10:49:00
板凳
回复 2楼roger.wang的帖子

总记录数1813行,虚拟翻页每页显示30行,列数没有变化,一直是51列。
翻到第二页,修改单元格后,e.row是35,但是页面显示的只有30行,
cell = e.spread.GetCellByRowCol(e.row, 50);
这句得到的cell就是null了。
在JS中,有没有其他的方法,修改Locked = Ture的单元格的内容?
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-2-8 11:41:00
地板
回复 3楼dlerror的帖子

在js中,是根据页面html内容进行操作的,如果只有30行,操作第35行,则会获取不到Cell,报1#楼的错误了。

1 什么情况下触发了DataChanged js事件的?
2 能给提供一个简易demo吗?
回复 使用道具 举报
dlerror
中级会员   /  发表于:2014-2-8 13:41:00
5#
回复 4楼roger.wang的帖子

  1. <FarPoint:FpSpread ID="spdSodatu" runat="server" ActiveSheetViewIndex="0" BorderColor="Black" BorderStyle="Solid" BorderWidth="1px" currentPageIndex="0" Height="100%" Width="100%" TabIndex="5" DesignString="&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;Spread /&amp;gt;">
  2.     <commandbar backcolor="Control" buttonfacecolor="Control" buttonhighlightcolor="ControlLightLight" buttonshadowcolor="ControlDark">
  3.         <Background BackgroundImageUrl="SPREADCLIENTPATH:/img/cbbg.gif"></Background>
  4.     </commandbar>
  5.     <sheets>
  6.         <FarPoint:SheetView DesignString="" SheetName="Sheet1">
  7.         </FarPoint:SheetView>
  8.     </sheets>
  9.     <ClientEvents DataChanged="spdService_DataChanged" />
  10.     <TitleInfo BackColor="#E7EFF7" ForeColor="" HorizontalAlign="Center" VerticalAlign="NotSet" Font-Size="X-Large" font-bold="False" font-italic="False" font-overline="False" font-strikeout="False" font-underline="False"></TitleInfo>
  11. </FarPoint:FpSpread>
复制代码

这是Spread,<ClientEvents DataChanged="spdService_DataChanged" />这样调用JS方法,单元格输入内容,焦点离开后,触发JS。
demo有点麻烦,我试试。
回复 使用道具 举报
dlerror
中级会员   /  发表于:2014-2-11 10:28:00
6#
回复 4楼roger.wang的帖子

Visual Studio 2012 + SPREAD for ASP.NET 7.0 + IE9
不好意思,我们使用的是日文系统,demo没有工程文件,只有页面的前台和后台的代码。
在第一或第二列输入数字,第三列自动赋值“99999”,而且第三列的Locked = True。
使用了虚拟翻页,每页显示30行,第一页没有问题,第二页出现了问题。
麻烦版主帮忙看一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-2-11 14:29:00
7#
回复 6楼dlerror的帖子

谢谢您提供的demo,问题定位了。
初步判断是个bug,我要提交问题到产品团队。

给您造成的不便,再次深表抱歉。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-2-11 15:29:00
8#
回复 6楼dlerror的帖子

还需要您再配合一下,您用的 SPREAD for ASP.NET 7.0 是英文版本还是日文版。
完整的版本号是多少?
回复 使用道具 举报
dlerror
中级会员   /  发表于:2014-2-11 17:39:00
9#
回复 8楼roger.wang的帖子

日文版,版本号:7.0.4001.2010
谢谢版主帮忙!
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-2-11 18:18:00
10#
回复 9楼dlerror的帖子

好的,知道了。 谢谢您的配合。

正在和产品团队沟通,还请您理解。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部