找回密码
 立即注册

QQ登录

只需一步,快速开始

ttjie

高级会员

14

主题

55

帖子

1877

积分

高级会员

积分
1877

活字格认证

ttjie
高级会员   /  发表于:2014-1-16 10:30  /   查看:7832  /  回复:8
你好,

有办法给一个CELL加服务端事件吗?

我要实现的需求是,编辑一个cell,之后我要重置所有的formula,不知道可不可以实现?

谢谢

8 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2014-1-16 11:24:00
沙发
回复 1楼ttjie的帖子

您的需求可以这样理解不:
1 Spread中有多个公式,在不同的cell
2 某一个cell编辑了:如从2->3
3 要让其他有公式的cell重新计算

添加这行代码试试:

  1. FpSpread1.Sheets[0].AutoCalculation = true;
  2. FpSpread1.ClientAutoCalculation = true;
复制代码


参考文档:Spread for ASP.NET 7.0 Product Documentation > Developer's Guide > Managing Formulas > Recalculating and Updating Formulas Automatically
回复 使用道具 举报
ttjie
高级会员   /  发表于:2014-1-16 11:45:00
板凳
回复 2楼roger.wang的帖子

你好,谢谢你这些天给我的所有回复 :)

我想要的不只是重新计算,我还要从新写公式,就是说以前的公式也随着我更改某一个cell而更改。
我的笨方法是把一个textbox放到spread外,然后加一个edit事件,来刷新spread的所有公式。

有没有办法把这个textbox放到spread里去?
或者说把一个CELL当成我的textbox, 编辑完后要一个postback的事件,然后我可以拿到这个值从新修改所有的公式?

不知你能不能理解
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-16 12:21:00
地板
回复 3楼ttjie的帖子

不客气  

没有办法把TextBox放到Spread中去,Spread提供的CellType,以及可自定义CellType选择余地很多。
把您的帖子我重复一遍,看理解的对不对:
1 前端 Spread.Cell编辑完,如2->3
2 触发PostBack事件,后台处理
3 前端 想拿到这个值
4 前端 想修改所有的公式

能否简化一下问题,前端编辑完后,直接在后台修改所有公式呢?
或者您给提供一个简易的demo,我们围绕同一个目标沟通。
回复 使用道具 举报
ttjie
高级会员   /  发表于:2014-1-16 12:46:00
5#
回复 4楼roger.wang的帖子

可以前端编辑完后,直接在后台修改所有公式,有办法吗?
回复 使用道具 举报
ttjie
高级会员   /  发表于:2014-1-16 13:52:00
6#
回复 4楼roger.wang的帖子

你好,

这是一个简单的例子,我在输入框中输入1,B1这个Cell 显示2
输入2, 显示3

有办法拿一个FpSpread的cell来取代我的textbox吗?

谢谢

Demo.zip

3.74 MB, 阅读权限: 255, 下载次数: 1

回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-16 18:17:00
7#
回复 6楼ttjie的帖子

看您的代码,已经实现ClientAutoCalculation="True" 了,故每次修改Cell数据,会触发后端Page_Load,直接在这里写逻辑,可以吗?

  1.       
  2. protected void Page_Load(object sender, EventArgs e)
  3.         {
  4.             if (!IsPostBack)
  5.             {
  6.                 FpSpread1.ActiveSheetView.Cells[0, 0].Value = 2;
  7.                 FpSpread1.ActiveSheetView.Cells[1, 0].Value = 3;

  8.                 Initial(1);
  9.             }
  10.             else
  11.             {
  12.                 int num = 1;
  13.                 Int32.TryParse(TextBox1.Text, out num);
  14.                 Initial(num);
  15.             }
  16.         }
复制代码
回复 使用道具 举报
ttjie
高级会员   /  发表于:2014-1-17 13:38:00
8#
回复 7楼roger.wang的帖子

这个问题不用了,我用OFFSET这个公式搞定了,不用在服务端再写逻辑了。

另ClientAutoCalculation="True"会触发服务端事件吗,这个应该是前端事件吧

不过还是谢谢你
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-17 13:41:00
9#
回复 8楼ttjie的帖子

谢谢您的反馈。

ClientAutoCalculation="True" 不会触发服务端事件。

说明见文档:
Gets or sets whether to perform automatic re-calculation on the client-side data in support of AJAX applications.

FarPoint.Web.Spread Assembly > FarPoint.Web.Spread Namespace > FpSpread Class : ClientAutoCalculation Property
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部