找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman

社区贡献组

270

主题

1万

帖子

1万

积分

社区贡献组

积分
19311

活字格认证微信认证勋章元老葡萄

iceman
社区贡献组   /  发表于:2011-11-25 19:26  /   查看:13516  /  回复:19
许多用户都问到,能不能在 CommandBar 添加自定义按钮,去实现特殊的功能?
下面这篇文章将展示如何在 CommandBar  添加自定义按钮,及如何使用自定义按钮调用前台和后台事件:
主要步骤:
1.添加 Spread ButtonCommand 事件,提供 自定义 button 调用。

2. 重载 Render 添加自定义按钮:
  1.         protected override void Render(HtmlTextWriter writer)
  2.         {
  3.             Table table = FpSpread1.FindControl("cmdTable") as Table;

  4.             //自定义按钮调用前台事件
  5.             DropDownList changepage = new DropDownList();
  6.             changepage.ID = "pageindex";
  7.             changepage.Items.Add("1");
  8.             changepage.Items.Add("2");
  9.             changepage.Items.Add("3");
  10.             changepage.Items.Add("4");
  11.             changepage.Items.Add("5");
  12.             changepage.Attributes.Add("onchange", "change()");

  13.             TableCell cell2 = new TableCell();
  14.             cell2.Controls.Add(changepage);
  15.             table.Rows[0].Cells.Add(cell2);


  16.             //自定义按钮调用后台事件
  17.             TableCell cell1 = new TableCell();
  18.             Button btn1 = new Button();
  19.             btn1.Text = "自定义按钮";
  20.             btn1.Text = "Button1";
  21.             btn1.Attributes.Add("onclick", ClientScript.GetPostBackEventReference(FpSpread1, "BtnCommand,-1,-1") + "; return false;");
  22.             cell1.Controls.Add(btn1);
  23.             table.Rows[0].Cells.Add(cell1);

  24.             base.Render(writer);
  25.         }
复制代码
3.DropDownList  前台函数代码:
  1.     <script type="text/javascript">
  2.         function change() {
  3.             var pageindex = document.getElementById("FpSpread1_pageindex").value-1;
  4.             FpSpread1.CallBack("Page,"+pageindex);
  5.             return false;
  6.         }
  7.     </script>
复制代码
效果图:

png

png


Demo 下载:
测试环境:VS2010 + Srpead for ASP.NET V5.0.3524.2008
Demo.zip (2.78 MB, 下载次数: 1072)

19 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-4-1 10:58:00
推荐

回复 4# study1990 的帖子

study1990 你好,
我的实现方法是,
1.添加 HiddenField 控件,用于在前台记录 mypager.value。
2.前台添加 FpSpread1.CallBack("Button",+pageindex); 去调用 Button_Command,在 Button_Command 取得 HiddenField  值即可。
前台代码:

  1.     <script type="text/javascript">
  2.         function change() {
  3.             var pageindex = document.getElementById("FpSpread1_pageindex").value - 1;
  4.             //HiddenFiled ID 为 getpage
  5.             var getpage = document.getElementById("getpage");
  6.             page.value = pageindex;
  7.             FpSpread1.CallBack("Page," + pageindex);
  8.             FpSpread1.CallBack("Button",+pageindex);
  9.             return false;
  10.         }
  11.     </script>
复制代码
后台代码:

  1.         protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
  2.         {
  3.             string test = this.getpage.Value;
  4.         }
复制代码
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-3-31 17:49:00
沙发

回复 1# iceman 的帖子

05.            ss.CallBack(&quotage,&quot; + mypager.value);
后台怎么接受mypager.value?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-1 09:43:00
板凳

回复 2# study1990 的帖子

study1990 你好,在 Page_Load 中可以取得 mypager.value
  1.   string pageIndex = this.Request[&quot;__EVENTARGUMENT&quot;];
  2.             if (pageIndex != null)
  3.                 {
  4.                 pageIndex = pageIndex.Substring(7, 1);
  5.                 }   
复制代码
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-4-1 10:04:00
地板

回复 3# iceman 的帖子

能在private void FpSpread_ButtonCommand中接受吗?
或者在Page_Load 中取得,怎么样在FpSpread_ButtonCommand使用?
谢谢回答!
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-4-2 19:58:00
6#

回复 5# iceman 的帖子

这样添加自定义按钮很不方便,能不能出个版本,可以点个按钮就能向工具栏中加按钮的
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-4-6 17:56:00
7#
5939757911132.jpg (2.71 KB, 下载次数: 1217)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-10 09:09:00
8#

回复 7# study1990 的帖子

study1990 你好,

1.DropDownList 为 ASP.NET 标准控件,添加图片只能通过继承 DropDownList  自定义控件实现。
2.楼主可以尝试在抓到 CommandBar 对应 Table 后添加 TableRow,在这个 TableRow 中模拟公式栏,抓取方式可以参考 1#。
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-4-10 10:42:00
9#

回复 8# iceman 的帖子

1.DropDownList  类中没有添加图片的项,该怎么改写?
2.添加上了,但CommandBar外层的table中含一个<div id="FpSpread_commandBar"></div>
它的高度被控件定死了,一直是27px,定义的公式栏被隐藏了,想在style和后台中对这个div高度控制,可是无效,该怎么办?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-10 11:12:00
10#

回复 9# study1990 的帖子

study1990 你好,
1.关于自定义控件方法可以网上搜索些相关的参考资料。   
2.可以获取 Table 的 父容器 Div ,改变适当高度,即可显示完全,参考代码:
  1. WebControl tableContainer = FpSpread1.FindControl(&quot;commandBar&quot;) as WebControl;
  2.             tableContainer.Height = 80;
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部