找回密码
 立即注册

QQ登录

只需一步,快速开始

houdawei

银牌会员

2

主题

8

帖子

2476

积分

银牌会员

积分
2476

活字格认证

最新发帖
houdawei
银牌会员   /  发表于:2014-10-13 13:07  /   查看:9912  /  回复:10
用以下这种方式时,这一列的数据就显示不出来了,显示的内容都是“Button”
FarPoint.Web.Spread.ButtonCellType linkButton = new FarPoint.Web.Spread.ButtonCellType();
            linkButton.ButtonType = FarPoint.Web.Spread.ButtonType.LinkButton;
            linkButton.CommandName = "MyCommand";
            FpSpread1.Sheets[0].Columns[0].CellType = linkButton;

10 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-10-13 18:11:00
沙发
回复 1楼houdawei的帖子

我是通过以下方法添加 LinkButton 的,如果需要参数不同,那么需要设置多个 CellType,制定不同的 CommandName 才能实现:

  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (IsPostBack)
  4.             {
  5.                 return;
  6.             }

  7.             DataTable dt = new DataTable();
  8.             dt.Columns.Add("col1", typeof(string));

  9.             dt.Rows.Add("1");
  10.             dt.Rows.Add("1");
  11.             dt.Rows.Add("1");
  12.             dt.Rows.Add("1");

  13.             //this.FpSpread1.ActiveSheetView.AutoGenerateColumns = false;
  14.             //this.FpSpread1.ActiveSheetView.DataAutoCellTypes = false;

  15.             this.FpSpread1.ActiveSheetView.DataSource = dt;

  16.             this.FpSpread1.ActiveSheetView.Columns.Add(0, 1);
  17.             FarPoint.Web.Spread.ButtonCellType linkButton = new FarPoint.Web.Spread.ButtonCellType();
  18.             linkButton.ButtonType = FarPoint.Web.Spread.ButtonType.LinkButton;
  19.             linkButton.CommandName = "MyCommand";
  20.             FpSpread1.Sheets[0].Columns[0].CellType = linkButton;
  21.         }
复制代码
回复 使用道具 举报
houdawei
银牌会员   /  发表于:2014-10-14 09:27:00
板凳
您的那种方式是一样的,都不能把LinkButton和绑定的Datatable关联起来。
我的需求是把LinkButton绑定到Datatable的一列上,例如Datatable里有一列【地区】,那么在spread里这一列仍然显示辽宁、安徽、河北。。。,然后点击辽宁的话就把辽宁发回后台,后台根据发回的数据再做处理。
就像asp的repeater,可以在数据绑定的时候设置linkbutton
<aspinkButton ID="lbtnEdit" runat="server" CommandName="edit" CommandArgument='<%#Eval("ATICLTYPEID") %>' ><%#Eval("NAME") %></aspinkButton>|
回复 使用道具 举报
houdawei
银牌会员   /  发表于:2014-10-14 09:29:00
地板
回复 2楼iceman的帖子

您的那种方式是一样的,都不能把LinkButton和绑定的Datatable关联起来。
我的需求是把LinkButton绑定到Datatable的一列上,例如Datatable里有一列【地区】,那么在spread里这一列仍然显示辽宁、安徽、河北。。。,然后点击辽宁的话就把辽宁发回后台,后台根据发回的数据再做处理。
就像asp的repeater,可以在数据绑定的时候设置linkbutton
<asp:LinkButton ID="lbtnEdit" runat="server" CommandName="edit" CommandArgument='<%#Eval("ATICLTYPEID") %>' ><%#Eval("NAME") %></asp:LinkButton>
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-14 14:07:00
5#
回复 4楼houdawei的帖子

实现方法如下:
后台代码:

  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (IsPostBack)
  4.             {
  5.                 return;
  6.             }

  7.             DataTable dt = new DataTable();
  8.             dt.Columns.Add("col1", typeof(string));

  9.             dt.Rows.Add("辽宁");
  10.             dt.Rows.Add("吉林");
  11.             dt.Rows.Add("河北");

  12.             this.FpSpread1.ActiveSheetView.DataSource = dt;
  13.         }
  14.         protected override void Render(HtmlTextWriter writer)
  15.         {

  16.             Table tb = this.FpSpread1.FindControl("viewport") as Table;
  17.             for (int i = 0; i < tb.Rows.Count; i++)
  18.             {
  19.                 tb.Rows[i].Cells[0].Attributes.Add("onclick","test()");
  20.             }
  21.             base.Render(writer);
  22.         }

  23.         protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
  24.         {

  25.         }
复制代码


前台代码:

  1.     <script type="text/javascript">
  2.         function test() {
  3.             var spread = this.document.getElementById("FpSpread1");
  4.             var col = FpSpread1.GetActiveCol();
  5.             var row= FpSpread1.GetActiveRow();

  6.             var scell = FpSpread1.GetValue(row, col);

  7.             spread.CallBack("Button"+scell, true);
  8.         }
  9.     </script>
复制代码


请你尝试后反馈结果,有问题欢迎继续讨论。
回复 使用道具 举报
houdawei
银牌会员   /  发表于:2014-10-14 15:55:00
6#
回复 5楼iceman的帖子

非常感谢,但是还有两个问题想请教一下
1、现在click事件是绑定在单元格上的,能否绑定到a标签上?
2、spread.CallBack这个ajax调用吧?能实现postback吗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-15 12:10:00
7#
回复 6楼houdawei的帖子

1.抱歉,无法直接绑定到 a 标签上。
2.spread.CallBack 可以调用到FpSpread1_ButtonCommand事件。
回复 使用道具 举报
houdawei
银牌会员   /  发表于:2014-10-15 16:03:00
8#
回复 7楼iceman的帖子

【spread.CallBack 可以调用到FpSpread1_ButtonCommand事件】
但这是ajax调用,在FpSpread1_ButtonCommand中不能进行Response.Redirect
能不能像LinkButton那种postback,刷新页面的。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-16 19:30:00
9#
回复 8楼houdawei的帖子

建议您通过前台方法打开链接例如,window.open(URL,name,specs,replace)方法通过链接传递参数。
回复 使用道具 举报
houdawei
银牌会员   /  发表于:2014-10-17 15:06:00
10#
回复 9楼iceman的帖子

谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部