找回密码
 立即注册

QQ登录

只需一步,快速开始

ZenosZeng 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-1 12:18  /   查看:7879  /  回复: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 个回复

倒序浏览
HNA_fengjie
论坛元老   /  发表于:2011-11-1 14:33:00
沙发

demo存在异常

我们下载这个demo后运行,单击“insert  a row”或者“add a row”按钮后抛出如图所示的异常,请尽快解决。
5645766112005.png
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-1 14:52:00
板凳

回复 2# HNA_fengjie 的帖子

你好,从你的截图来看,fp_Client文件夹有些问题。我使用的Spread v 5.0.3524.2008 + VS2010 + IE8。

你新建一个工程,添加aspx页面和Spread控件,然后在页面的代码中添加以下代码看能否运行
  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(); return false;");
  7.             }
  8.             base.Render(writer);
  9.         }
复制代码
回复 使用道具 举报
HNA_fengjie
论坛元老   /  发表于:2011-11-7 19:08:00
地板

在固定行插入数据之后,相应的公式不会自动更新

1)如图所示,我原来的“序号”列从1到10,但是现在,插入一行之后,如何让第16行的“序号”变成11?
4357360316623.png
4357472189971.png
回复 使用道具 举报
HNA_fengjie
论坛元老   /  发表于:2011-11-7 19:26:00
5#

如何批量插入行

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

回复 5# HNA_fengjie 的帖子

你好,

你的问题已经收到,我们正在处理中,稍后给你回复。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-11-8 11:11:00
7#

回复 5# HNA_fengjie 的帖子

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

附件演示了非绑定模式下如何实现你的3个需求。如有问题,请随时联系我们。
Spread_Web_Demo3.zip (2.14 KB, 下载次数: 100)
回复 使用道具 举报
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-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.         }
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部