找回密码
 立即注册

QQ登录

只需一步,快速开始

冰岛
注册会员   /  发表于:2023-5-17 16:04  /   查看:6048  /  回复:18
1金币
本帖最后由 冰岛 于 2023-5-17 16:40 编辑

请问如何设置这个分组的标题?我想将分组标题设置为图二的标签
image.png833529662.png

image.png774826965.png

18 个回复

正序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-24 09:56:05
19#
回复 使用道具 举报
冰岛
注册会员   /  发表于:2023-5-23 18:22:27
18#
Richard.Ma 发表于 2023-5-23 18:03
已经和您电话沟通。可以先下载v16新版本,来测试table绑定。
table绑定代码比较简单,可以参考这里的文档
...

感谢版主的解答。马上开启新版测试。
回复 使用道具 举报
冰岛
注册会员   /  发表于:2023-5-23 17:19:26
16#
Richard.Ma 发表于 2023-5-23 17:13
我建议你留一个电话,我电话和你沟通一下吧。具体实现的话,相当于数据分组这块是在数据源中就进行分组。sp ...

好的,15882201102,小张。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-23 17:13:11
15#
我建议你留一个电话,我电话和你沟通一下吧。具体实现的话,相当于数据分组这块是在数据源中就进行分组。spread本身并不做任何分组操作。
回复 使用道具 举报
冰岛
注册会员   /  发表于:2023-5-23 17:00:33
14#
版主说的”基于上述情况,最适合你的需求的应该是新建几个table,每个table来分别绑定一个分组数据源。以实现上面的效果,效果如下图,每个table都是独立的。你可以通过代码动态创建,绑定数据源,来实现你说的分组逻辑“,以及下图非常切合我的实际。我需要用几个DataTable来当数据源。
1、请问这个如何实现呢?
2、这种多个
DataTable来当数据源保存之后再次打开,想再次添加数据进入,又应该如何处理呢?

image.png896220397.png




回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-23 16:41:19
13#
本帖最后由 Richard.Ma 于 2023-5-23 16:43 编辑

大概理解你的意思了。如果你是要实现图片中的效果的话,那么spread自带的分组功能我觉得很难实现。主要是你的需求1.给不同列设置标签。这个做不到,你可以看到分组行实际上并没有分列


另外我不太理解你说的第二点:“不同分组数据列的数量不同”,如果是同一个数据源分组的话,为什么列的数量会不同?所以暂时只能猜测你这些分组实际上并不是同源数据。所以才会字段本身就不相同。最后,我也没看到你是用哪个字段来进行分组的。


基于上述情况,最适合你的需求的应该是新建几个table,每个table来分别绑定一个分组数据源。以实现上面的效果,效果如下图,每个table都是独立的。你可以通过代码动态创建,绑定数据源,来实现你说的分组逻辑
image.png900238647.png


回复 使用道具 举报
冰岛
注册会员   /  发表于:2023-5-23 09:43:17
12#
本帖最后由 冰岛 于 2023-5-23 12:05 编辑

image.png400102538.png

这个分组是SpreadJs做的,所以我想Spread.net应该也能完成。
是想达到这样的要求,就是他这个分组上面每一列都有标签名称:例如:证书号、样品标签等等。
我是想在分组时就给这个分组数据设置这样的列名称,就像DataTable的列名称一样,并且想和DataTable一样可以过通Row[0][标签名称]就获取到他的值,这样我就可以把这个对应的数据写入数据库中了。
现在就是我通过代码,设置了分组,但不知道
1是、怎么给分组中数据行的列设置列的标签名称,
2是:怎么给不同分组数据行的列设置不同的标签名称,(因为不同分组数据列的数量不同,比如:分组1一共10列,分组2有15例数据。就像上面的图一样。)
3是:设置标签后如何获取分组行中列的标签名称来获取数据。(例如像DataTable一样可以过通Row[0][标签名称]就获取到他的值)
fpSpread1.AllowColumnMove = true;
fpSpread1.ActiveSheet.AllowGroup = true;
SheetView sheet = fpSpread1.ActiveSheet;

            GroupDataModel groupData = new GroupDataModel(sheet.Models.Data);
            sheet.Models.Data = groupData;

            SortInfo[] sort = new SortInfo[1];
            sort[0] = new SortInfo(0, true);
            groupData.Group(sort, null);

            DefaultGroupFooter groupFooter = fpSpread1.Sheets[0].DefaultGroupFooter[4];
            ISheetDataModel dataModel = groupFooter.DataModel;





回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-22 18:29:07
11#
我没有看明白你这个截图汇总是如何分组的,分组肯定是根据某一个字段,本质上就是排序,所以你可以看到自定义分组的话,实际上也是实现一个compare接口

“获取每个分组、分组中的每行数据及对应的标签”你可以通过上面的循环就能拿到
image.png835372619.png

比如你要拿到分组后每行数,那么你可以通过每个分组中的Rows数组,就能拿到原始的行号,来获取原始的数据。


然后下面的需求“然后把整个页面存为文件,可多次打开编辑里面的数据,或添加、改变分组及分组数据。”,保存和加载的话没有问题你就通过open save方法就行,会保留原有的分组信息

但是你提到的添加、改变分组及分组数据,我不知道这个具体是要做什么,分组只是根据原有数据来做的,那么你可以添加一条数据,只要分组用的列值是一个新值,那么重新分组后自然就有一个新组了,“改变分组”我也不清楚你具体是什么需求。

回复 使用道具 举报
冰岛
注册会员   /  发表于:2023-5-22 11:26:07
10#
本帖最后由 冰岛 于 2023-5-22 13:54 编辑
Richard.Ma 发表于 2023-5-22 11:03
你可以在grouped事件中加入下面的代码,Text就是定义分组行的文本的。
fpSpread1.Grouped += FpSpread1_Gro ...

我想设置的分组标题不是一个文字说明。我是一组标签,和列是对应的,像下图这样的。

image.png887700500.png

并且需要获取每个分组、分组中的每行数据及对应的标签。好将其对应的数据保存到数据库中。
然后把整个页面存为文件,可多次打开编辑里面的数据,或添加、改变分组及分组数据。

请版主帮我做一个DEMO。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-22 11:03:38
9#
你可以在grouped事件中加入下面的代码,Text就是定义分组行的文本的。
fpSpread1.Grouped += FpSpread1_Grouped;

  1.         private void FpSpread1_Grouped(object sender, EventArgs e)
  2.         {
  3.             if (fpSpread1.ActiveSheet.Models.Data is FarPoint.Win.Spread.Model.GroupDataModel)
  4.             {
  5.                 FarPoint.Win.Spread.Model.GroupDataModel gdm = (FarPoint.Win.Spread.Model.GroupDataModel)fpSpread1.ActiveSheet.Models.Data;
  6.                 for (int i = 0; i < gdm.RowCount; i++)
  7.                 {
  8.                     // Determine whether it is group header row or not
  9.                     if (gdm.IsGroup(i))
  10.                     {
  11.                         // Get group
  12.                         var g = gdm.GetGroup(i);
  13.                        
  14.                         g.Text = "我是分组行:"+ i;
  15.                         // Get the reference column of the group and the number of rows included in the group
  16.                         Console.WriteLine(string.Format("Column index:{0}, Row count:{1}", g.Column, g.Rows.Count));
  17.                     }
  18.                 }
  19.             }
  20.         }
复制代码


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