找回密码
 立即注册

QQ登录

只需一步,快速开始

szpzr

高级会员

139

主题

554

帖子

1763

积分

高级会员

积分
1763

活字格认证

szpzr
高级会员   /  发表于:2016-9-5 07:08  /   查看:7371  /  回复:16
请教:Spread的第一列为CheckBoxTypecell类型,勾选(或取消)此列时如何在前台统计已勾选行数,和汇总某列数值,并把他们赋值给文本框。

16 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-9-5 09:40:32
沙发
本帖最后由 dexteryao 于 2016-9-5 09:41 编辑

您好,在前台没有现成的事件可以触发。
在后台,您设置 checkBoxCellType.AutoPostBack = true;可以触发ButtonCommand事件。
如果要在前台做一种是可以监听所有checkbox事件,另外是重写CheckBoxCellType,加上一个事件前台触发.
  1.     public class ClientClickCheckBoxCellType: CheckBoxCellType
  2.     {
  3.         public override Control PaintCell(string id, TableCell parent, Appearance style, Inset margin, object value, bool upperLevel)
  4.         {
  5.             var panel = base.PaintCell(id, parent, style, margin, value, upperLevel) as Panel;
  6.             var checkbox = panel.Controls[0] as CheckBox;

  7.             checkbox.Attributes.Add("onclick", "checkChanged();");
  8.             return panel;
  9.         }
  10.     }
复制代码

前台

  1. <script>
  2. window.onload = function () {
  3.             var spread1 = document.getElementById("<%=FpSpread1.ClientID %>");
  4. }
  5.        function checkChanged(event) {
  6.             alert("The checkChanged!");
  7.         }


  8.     </script>
复制代码



asp.net前端提供的操作和事件不多。主要还是后端处理,建议使用ButtonCommand事件,您TextBox赋值也在后端做就好了,您加上AJAX,不让页面刷新提交就好了
回复 使用道具 举报
szpzr
高级会员   /  发表于:2016-9-8 13:31:01
板凳
dexteryao 您好!后台这样可以吗?
protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
        {
            if (Convert.ToInt16 ( FpSpread1.ActiveSheetView.Cells[0, 0].Value) == 1)
            {
                ClientScript.RegisterStartupScript(this.GetType(), "message", "<script>alert('选择!');</script>");
                TxtCheckBolt.Text = "1";
                return;
            }
            else
            {
                ClientScript.RegisterStartupScript(this.GetType(), "message", "<script>alert('取消!');</script>");
                return;
            }
        }
好像不能触发逻辑体内的语句,而且好像不能定位到行?
回复 使用道具 举报
szpzr
高级会员   /  发表于:2016-9-8 13:32:48
地板
您上面的示例不太l理解明白
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-9-8 17:18:02
5#
szpzr 发表于 2016-9-8 13:32
您上面的示例不太l理解明白

您想通过前台进行统计,Spread没有提供接口可以做统计。
因此在2楼,@dexteryao给出的方案是自定义来实现需求。
让你继承CheckBoxCellType的接口创建自定义类,并且添加了checkChanged事件。
这个事件是在CheckBox状态改变的时候触发,你可以拿到CheckBox和它的状态,然后你需要自己定义一个计数,去存储勾选的行数。

如果你使用的是后台事件,有没有设置checkBoxCellType.AutoPostBack = true?
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
szpzr
高级会员   /  发表于:2016-9-9 09:05:21
6#
能给个示例吗?谢谢!
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-9-9 12:10:55
7#
szpzr 发表于 2016-9-9 09:05
能给个示例吗?谢谢!

很抱歉我们这里没有现成的示例演示。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
szpzr
高级会员   /  发表于:2016-9-9 13:38:32
8#
也激发前台事件,不知怎么统计选择(或非选择)行或某列汇总。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-9-9 16:52:41
9#
szpzr 发表于 2016-9-9 13:38
也激发前台事件,不知怎么统计选择(或非选择)行或某列汇总。

激发事件后,你需要自己写一个字段来存储你需要的信息,然后汇总信息也是需要自己去计算。
Spread没有提供接口。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
szpzr
高级会员   /  发表于:2016-9-9 17:04:32
10#
在前台还是在后台,能提供下思路吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部