找回密码
 立即注册

QQ登录

只需一步,快速开始

ddyuup

新手上路

2

主题

4

帖子

44

积分

新手上路

积分
44
  • 40

    金币

  • 主题

  • 帖子

最新发帖
ddyuup
新手上路   /  发表于:2014-1-7 15:50  /   查看:5773  /  回复:4
你好,控件版本为SPREAD .NET 7 v2
通过点击FpSpread控件ColumnHeader触发CellClick事件,如下:
CellClickHandler(object,eventAgs)
{
     Dim sorter(0) as SortInfo
     sorter(0) = new SortInfo(eventAgs.Column,True)
     spread.ActiveSheet.SortRows(0,spread.ActiveSheet.RowCount,sorter)
}
此时按照所点击列进行默认排序,当再次点击该列的Header时,该列数据未发生变化,但其他列数据与上一次不同,每次点击时,其他列数据均会发生变化,没找到原因。

4 个回复

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

问题明白了,我先按照您的code弄个demo实验一下。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-7 17:54:00
板凳
回复 1楼ddyuup的帖子

在SortRows前,添加这行diamond试试:

  1. fpSpread1.ActiveSheet.Columns(eventAgs.Column).AllowAutoSort = true
复制代码


对了,sort是在指定对应列为AllowAutoSort =true后,双击ColumnHeader排序的。
回复 使用道具 举报
ddyuup
新手上路   /  发表于:2014-1-8 14:11:00
地板
回复 3楼roger.wang的帖子

你好,按照你的方法试过了,每次点击同一ColumnHeader时,其他数据列还是会发送变化。
我的想法其实就是单击某列ColumnHeader时,数据能够按照该列排序(升序)。需求来自Spread 3.0J的一个老项目迁移,源Source如下:
With sprList
    .Row = 1
    .Col = 1
    .Row2 = .MaxRows
    .Col2 = .MaxCols
    .SortBy = SS_SORT_BY_ROW 'SS_SORT_BY_ROW = 0
    .SortKey(1) = Col
    .SortKeyOrder(1) = SS_SORT_ORDER_ASCENDING 'SS_SORT_ORDER_ASCENDING=1
    .Action = SS_ACTION_SORT 'SS_ACTION_SORT =25
End With
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-9 09:02:00
5#
回复 4楼ddyuup的帖子

"每次点击同一ColumnHeader时,其他数据列还是会发送变化"
这句话没有太理解,请看如下2张图(Excel的排序)

excel_2.gif

excel_1.gif

当A列升序排序, B列数据为降序。
当A列降序排序, B列数据为升序。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部