找回密码
 立即注册

QQ登录

只需一步,快速开始

mengfk

高级会员

1

主题

5

帖子

1315

积分

高级会员

积分
1315

活字格认证

最新发帖
mengfk
高级会员   /  发表于:2014-3-3 17:51  /   查看:9110  /  回复:8
1、spread中点击标题是按照字符排序的,怎么按照数字排序。
如图 999应该排在15的上面,单元格类型是number类型的,
2、怎么禁止排序
大神们求助一下
WS000047.JPG (7.86 KB, 下载次数: 936)

8 个回复

倒序浏览
roger.wang
社区贡献组   /  发表于:2014-3-3 18:05:00
沙发
回复 1楼mengfk的帖子

问题1:
排序结果和该列的数据类型有关,如果是数值型排序结果是1,2,3,12,21,22,32;如果字符串结果就是1,12,2,21,22,3,32

  1. private void Form2_Load(object sender, EventArgs e)
  2.     {
  3.         fpSpread1.ActiveSheet.Cells[0, 0].Value = 1;
  4.         fpSpread1.ActiveSheet.Cells[1, 0].Value = 12;
  5.         fpSpread1.ActiveSheet.Cells[2, 0].Value = 2;
  6.         fpSpread1.ActiveSheet.Cells[3, 0].Value = 21;
  7.         fpSpread1.ActiveSheet.Cells[4, 0].Value = 22;
  8.         fpSpread1.ActiveSheet.Cells[5, 0].Value = 3;        
  9.         fpSpread1.ActiveSheet.Cells[6, 0].Value = 32;
  10.         this.fpSpread1.ActiveSheet.Columns[0].AllowAutoSort = true;

  11.         fpSpread1.ActiveSheet.Cells[0, 1].Value = "1";
  12.         fpSpread1.ActiveSheet.Cells[1, 1].Value = "12";
  13.         fpSpread1.ActiveSheet.Cells[2, 1].Value = "2";
  14.         fpSpread1.ActiveSheet.Cells[3, 1].Value = "21";
  15.         fpSpread1.ActiveSheet.Cells[4, 1].Value = "22";
  16.         fpSpread1.ActiveSheet.Cells[5, 1].Value = "3";
  17.         fpSpread1.ActiveSheet.Cells[6, 1].Value = "32";
  18.         this.fpSpread1.ActiveSheet.Columns[0].AllowAutoSort = true;
  19.         this.fpSpread1.ActiveSheet.Columns[1].AllowAutoSort = true;
  20.     }
复制代码


问题2:禁止排序
禁止排序之后需要清楚之前的排序指示器,代码如下:

  1. fpSpread1_Sheet1ActiveColumn.ResetSortIndicator()
  2. fpSpread1_Sheet1.Columns[i].AllowAutoSort = false;
复制代码
回复 使用道具 举报
mengfk
高级会员   /  发表于:2014-3-3 18:35:00
板凳
回复 2楼roger.wang的帖子

是数值类型的,代码如下
                        Case SpreadColumnAttribute.ColTypeEnum.SpNumber
                            Dim objNumCell As New FarPoint.Win.Spread.CellType.NumberCellType()
                            objNumCell.FixedPoint = False
                            objNumCell.Separator = ","
                            objNumCell.MaximumValue = 999999
                            objNumCell.ShowSeparator = True
                            .Columns(val.ColIndex).CellType = objNumCell
                            DirectCast(.Columns(val.ColIndex).CellType, FarPoint.Win.Spread.CellType.EditBaseCellType).FocusPosition = FarPoint.Win.Spread.CellType.EditorFocusCursorPosition.SelectAll
不过排序的时候还是按照字符拍的呢?
回复 使用道具 举报
mengfk
高级会员   /  发表于:2014-3-3 18:46:00
地板
回复 2楼roger.wang的帖子

另外排序好像还不能禁止,我的是vb.net WinForm版的spread 7.0
        For i As Integer = 0 To _SpdGrid.ActiveSheet.RowCount - 1
            _SpdGrid.ActiveSheet.ActiveColumn.ResetSortIndicator()
            _SpdGrid.ActiveSheet.Columns(i).AllowAutoSort = False
        Next
WS000048.JPG (53.13 KB, 下载次数: 1007)
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-3-4 10:45:00
5#
回复 4楼mengfk的帖子

您好,2#说的和VB.net无关。

我在Spread win 7.0上验证没有问题,英文版。

如果您用的是日文版的spread for winform 7.0j,建议您可以通过我们的葡萄城日本官网论坛, 寻求协助。https://www.grapecity.com/japan/support/
不便之处, 还请见谅。
回复 使用道具 举报
mengfk
高级会员   /  发表于:2014-3-4 10:56:00
6#
回复 5楼roger.wang的帖子

恩恩 还是要谢谢您了,这个方法 使用指定的 System.Comparison(Of T) 对整个 List(Of T) 中的元素进行排序。  您觉得可以不 自定义排序
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-3-4 10:58:00
7#
回复 6楼mengfk的帖子

可以。

但是,数字排序、字母排序是基本的排序,不需要这么麻烦的方法。
回复 使用道具 举报
mengfk
高级会员   /  发表于:2014-3-4 11:08:00
8#
回复 7楼roger.wang的帖子

恩恩 ,谢谢了,我再找别的办法试试,项目一开始这里就没解决。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-3-4 11:36:00
9#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部