找回密码
 立即注册

QQ登录

只需一步,快速开始

X765321

银牌会员

31

主题

99

帖子

3742

积分

银牌会员

积分
3742

活字格认证

X765321
银牌会员   /  发表于:2012-6-13 17:42  /   查看:7026  /  回复:8
如题,还有lockd的单元格也不能使用SetValue?

8 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-6-13 17:58:00
沙发
回复 1楼X765321的帖子

1.单元格处于编辑状态我使用一下方法赋值正常:

  1.     <script language="javascript" type="text/javascript">
  2. // <![CDATA[
  3.         function Button2_onclick() {
  4.             FpSpread1.SetValue(1,1,'test',false);
  5.         }
  6. // ]]>
  7.     </script>
复制代码

2.关于前台给锁定单元格赋值,请参考:http://gcdn.grapecity.com/showtopic-3132.html
回复 使用道具 举报
X765321
银牌会员   /  发表于:2012-6-13 18:09:00
板凳
你用的是spread4吗?假定正在编辑的是单元格cells[1,1],这时要直接给cells[1,1]进行SetValue不成功,单元格处于非编辑状态就可以,这个状态有点不好捕捉,你可以尝试在单元格的onEditStart事件中给单元格写入值看是否成功。关于问题二这样操作先是去掉了整个单元格属性,回写的却只有只读,那之前的单元格属性不是丢掉了,如小数位等。

onEditStart事件中可以通过event.cancel = true防止用户进入编辑状态,那反过来在客户端有办法防止一个单元格退出编辑状态吗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-14 12:37:00
地板
回复 3楼X765321的帖子

问题一:下面是我的测试 Demo 。测试环境:VS2008 &amp;&amp; Spread for ASP.NET 4.0.3505。
SpreadASPNET4.zip (2.32 MB, 下载次数: 352)
回复 使用道具 举报
X765321
银牌会员   /  发表于:2012-6-14 20:13:00
5#
问题一找到答案了,见鬼,我在spread控件的onkeydown事件中把当event.keyCode == 13时用SetValue方法给单元格赋值,这时没有问题,而当把此单元格类型设置为FarPoint.Web.Spread.TextCellType并且设置.AllowWrap为false,就会出现上述问题,代码如下:
客户端:
<script language="javascript" type="text/javascript">
    function mthEditWindowsKeyDown() {
        if (event.keyCode == 13) {FpSpread1.SetValue(1, 1, 'test', false);}
    }
    window.onload = function() { document.getElementById("FpSpread1").onkeydown = mthEditWindowsKeyDown };
</script>

服务端:
FarPoint.Web.Spread.TextCellType a = new FarPoint.Web.Spread.TextCellType();
a.AllowWrap = false;
FpSpread1.Sheets[0].Cells[1, 1].CellType = a;

当不进入单元格[1,1]的编辑模式敲回车可以赋值成功,当进入了单元的编辑模式后敲回车,不能正常赋值,去掉服务端的a.AllowWrap = false即正常。

何解?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-15 09:40:00
6#
回复 5楼X765321的帖子

你好,可以进行以下修改:

  1. <script language="javascript" type="text/javascript">
  2.         function mthEditWindowsKeyDown() {
  3.             if (event.keyCode == 13) {
  4.             //添加 EndEdit 方法结束编辑。
  5.             FpSpread1.EndEdit();
  6.             FpSpread1.SetValue(1, 1, 'test', false);
  7.            }
  8.         }
  9.         window.onload = function () { document.getElementById("FpSpread1").onkeydown = mthEditWindowsKeyDown };
  10.     </script>
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-15 10:24:00
7#
回复 3楼X765321的帖子

关于 3# 中的问题 3,可以设置如下属性:

  1. FpSpread1.EditModePermanent = true;
复制代码
回复 使用道具 举报
X765321
银牌会员   /  发表于:2012-6-15 18:25:00
8#
spread4有这个属性吗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-18 09:31:00
9#
回复 8楼X765321的帖子

X765321 你好,
不好意思,Spread for  ASP.NET 4 没有该属性。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部