找回密码
 立即注册

QQ登录

只需一步,快速开始

[已处理] spread 分组问题

dc22wt
论坛元老   /  发表于:2012-3-8 15:32:00
21#

你好,斑竹

格式我已经是设了的,现在我把那一栏设成了向右边靠齐,现在还没有出现问题。另外我这里还有一个问题 QQ截图未命名.png (27.27 KB, 下载次数: 1189)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-8 16:21:00
22#

回复 21# dc22wt 的帖子

dc22wt  你好,可以在 Grouped 事件中通过以下代码控制分组标题:

  1. private void fpSpread1_Grouped(object sender, EventArgs e)
  2.         {
  3.             FarPoint.Win.Spread.FpSpread ss = (FarPoint.Win.Spread.FpSpread)sender;
  4.             FarPoint.Win.Spread.Model.GroupDataModel gm;
  5.          
  6.             if (ss.ActiveSheet.Models.Data.GetType() == typeof(FarPoint.Win.Spread.Model.GroupDataModel))
  7.             {
  8.                 gm = (FarPoint.Win.Spread.Model.GroupDataModel)ss.Sheets[0].Models.Data;
  9.                 for (int i = 0; i < gm.RowCount; i++)
  10.                 {
  11.                     try
  12.                     {

  13.                         FarPoint.Win.Spread.Model.Group g;
  14.                         g = gm.GetGroup(i);
  15.                         g.Text = "写入你想要的值";
  16.                     }
  17.                     catch (Exception)
  18.                     {
  19.                         
  20.                     }
  21.                 }
  22.             }
  23.         }
复制代码
回复 使用道具 举报
dc22wt
论坛元老   /  发表于:2012-3-9 11:15:00
23#

你好,斑竹

可能我没有讲清楚,换种说法吧,就是我想把合计这一栏去掉,要把他和分组标题放在同一行,应该怎么做?谢谢

QQ截图未命名.png

97.38 KB, 下载次数: 1221

png

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-9 13:39:00
24#

回复 23# dc22wt 的帖子

dc22wt 你好,

1.通过 22# 代码,可以设置 Group 的 Text。

2.在分组后,通过 this.FpSpread1.Sheets[0].Cells[,] 可以获得对应合计行值。

3.通过   this.fpSpread1.Sheets[0].GroupFooterVisible = false;可以隐藏分组脚。
回复 使用道具 举报
dc22wt
论坛元老   /  发表于:2012-3-14 10:50:00
25#
斑竹,实在是不好意思,按着你的意识,我还是没有实现我想要的结果,能不能麻烦你帮我写下代码,
       private void CreateGroupFooter(int colindex)
        {
            // 添加默认分组列
            SheetView sheet = fpSpread1.ActiveSheet;
            sheet.AllowGroup = true;
            GroupDataModel gdm = new GroupDataModel(sheet.Models.Data);
            sheet.Models.Data = gdm;
            //SortInfo 构造函数 SortInfo(0, true) 中第一个参数为 用于分组的列索引。
            SortInfo[] siList = new SortInfo[] { new SortInfo(colindex, true) };
            gdm.Group(siList, null);

            //设置默认分组
            DefaultGroupFooter dgf = fpSpread1_Sheet1.DefaultGroupFooter[colindex];
            ISheetDataModel dataModel = dgf.DataModel;

              //  设置分组中的公式汉字显示get(5)
                FarPoint.Win.Spread.CellType.TextCellType a = new TextCellType();
                this.fpSpread1_Sheet1.Columns.Get(5).CellType = a;

                //设置分组脚中公式
                //(dataModel as IAggregationSupport).SetCellAggregationType(0, 0, AggregationType.Count);
                // (dataModel as IAggregationSupport).SetCellAggregationFormat(0, 0, "数量:{0}");
                (dataModel as IAggregationSupport).SetCellAggregationType(0, 5, AggregationType.Sum);
                (dataModel as IAggregationSupport).SetCellAggregationFormat(0, 5, "合计:{0}");
                fpSpread1_Sheet1.GroupFooterVisible = true;

            }
就是在这个里面怎么把合计的那一行和分组标题放在同一行,谢谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-14 11:35:00
26#
dc22wt 你好,
我把本贴中问题汇总到以下 Demo,Demo 中成功演示了添加合计行内容到组头中,请参考:
columnfooter.rar (62.07 KB, 下载次数: 1507)
回复 使用道具 举报
dc22wt
论坛元老   /  发表于:2012-3-14 14:13:00
27#
先赞一个
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-14 14:28:00
28#

回复 27# dc22wt 的帖子

:sun:
回复 使用道具 举报
dc22wt
论坛元老   /  发表于:2012-3-14 15:05:00
29#
咳,斑竹啊,我的数据量很多哦,这么一循环的话,这个查询又慢了好多哦
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-14 16:08:00
30#

回复 29# dc22wt 的帖子

恩 ,我更改了下循环内代码,楼主参考下:

  1. for (int i = 0; i < gm.Groups.Count; i++)
  2.                 {
  3.                     try
  4.                     {

  5.                         FarPoint.Win.Spread.Model.Group g;
  6.                         g = gm.Groups[i] as FarPoint.Win.Spread.Model.Group;
  7.                         int row = g.Rows.Count;
  8.                         if (g != null)
  9.                         {
  10.                             g.Text = g.GroupFooter.DataModel.GetValue(0, 4).ToString();
  11.                         }
  12.                     }
  13.                     catch (Exception)
  14.                     {

  15.                     }
  16.                 }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部