找回密码
 立即注册

QQ登录

只需一步,快速开始

ZenosZeng 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-1 12:18  /   查看:7990  /  回复:13
Spread在进行Insert操作时,如果当前有ActiveCell,那么就在该行的前一行插入空白行;如果当前没有ActiveCell,那么就在第一行插入空白行。如果每次都在一个固定的行进行插入操作,可以通过下面的代码实现:

  1.         protected override void Render(HtmlTextWriter writer)
  2.         {
  3.             WebControl insertButton = FpSpread1.FindControl("Insert") as WebControl;

  4.             if (insertButton != null)
  5.             {
  6.                 insertButton.Attributes.Add("onclick", "var spread = FpSpread(\"FpSpread1\"); spread.SetActiveCell(4, 0); spread.UpdatePostbackData(); spread.Insert();");
  7.             }
  8.             base.Render(writer);
  9.         }
复制代码
Spread_Web_Demo3.zip (538.26 KB, 下载次数: 90)

13 个回复

正序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-17 12:18:00
14#
大概实现思路如下:
1、在页面中添加一个HiddenField控件
2、在Render方法中重写原有Insert的onclick事件,在onclick事件中调用一个输入框(你可以找一个类似于你另外帖子中使用的ymPrompt.js插件进行输入操作)
3、将输入框中的值付给HiddenField
4、在服务端的FpSpread1_ButtonCommand事件中取得HiddenField事件的值
5、根据HiddenField的值进行相应的插入操作
回复 使用道具 举报
HNA_fengjie
论坛元老   /  发表于:2011-11-17 11:43:00
13#

再插入行的时候如何自定义行?

能不能在插入行的时候,弹出一个窗口,在窗口里面可以填写插入多少行,在后台获取到填写行数,然后插入自定义的行数??麻烦在这个demo基础上修改一下,再做个demo????这个很紧急的!!!!!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-9 10:10:00
12#
使用以下代码设置公式:
  1. this.FpSpread1.ActiveSheetView.SetFormula(FpSpread1.ActiveSheetView.RowCount-1, 2, String.Format("SUM(C3:C{0})", FpSpread1.ActiveSheetView.RowCount-1));
复制代码


使用以下代码设置单元格属性:
  1. this.FpSpread1.ActiveSheetView.Cells[row,column]
复制代码
回复 使用道具 举报
HNA_fengjie
论坛元老   /  发表于:2011-11-9 09:57:00
11#

关于新插入行的公式自动跟新的问题,

1),我指的新插入行的公式,比如需要设置每一行D列的公式=sum(E行号:I行号),现在插入了一行,新插入行是第15行,那么我如何设置D15的公式为sum(E15:I15)?还有新插入行的显示样式怎么处理,单元格格式怎么处理
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-9 09:42:00
10#

回复 9# HNA_fengjie 的帖子

你好,

你可以将我Demo中的FpSpread1_InsertCommand事件删掉,你的三个需求都是在FpSpread1_ButtonCommand中完成的。当【Add】或者【Insert】之后会重新设置公式,当你在新增行中数据值时,公式会自动计算。
  1.         protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
  2.         {
  3.             if (e.CommandName.Equals("MyAddCommand") || e.CommandName.Equals("MyInsertCommand"))
  4.             {
  5.                 //例如一次增加3行数据
  6.                 this.FpSpread1.ActiveSheetView.RowCount += 3;

  7.                 //重新设置计算公式,因为新增行的C列都没有数据,
  8.                 //所以,返回页面后感觉公式没有自动计算,你在新增行的C列中输入值时,公式会自动计算
  9.                 this.FpSpread1.ActiveSheetView.SetFormula(0, 2, String.Format("SUM(C3:C{0})", FpSpread1.ActiveSheetView.RowCount));

  10.                 //设置新增行的序号
  11.                 for (int i = FpSpread1.ActiveSheetView.RowCount - 3; i < FpSpread1.ActiveSheetView.RowCount; i++)
  12.                 {
  13.                     FpSpread1.ActiveSheetView.SetValue(i, 0, (Int32)FpSpread1.ActiveSheetView.GetValue(i - 1, 0) + 10);
  14.                 }
  15.             }
  16.         }
复制代码
回复 使用道具 举报
HNA_fengjie
论坛元老   /  发表于:2011-11-8 20:00:00
9#

第二个问题的公式自动更新没有解决!!!

原帖由 HNA_fengjie 于 2011-11-7 19:26:00 发表
1)我现在采用在固定行插入数据,现在需要一次性插入多行,请问要怎么插入?
2)如图所示,原来有16行数据,从第5到第16行D列的公式为=sum(E行数:I行数),比如第8行D列为
=sum(E8:I8),现在在第14行后面插入一行如何让第15行D列的公式自动变成=SUM(E15:I15)?新插入数据之后还,第一列为“序号”如何自动更新?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-8 11:36:00
8#
你好,

附件演示了非绑定模式下如何实现你的3个需求。如有问题,请随时联系我们。
Spread_Web_Demo3.zip (2.14 KB, 下载次数: 100)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-8 11:11:00
7#

回复 5# HNA_fengjie 的帖子

你好,因为这个功能和数据源的设置方式相关,不知道你的数据源是绑定模式(设置DataSource),还是非绑定模式(通过代码自己填值)。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-8 10:47:00
6#

回复 5# HNA_fengjie 的帖子

你好,

你的问题已经收到,我们正在处理中,稍后给你回复。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部