找回密码
 立即注册

QQ登录

只需一步,快速开始

[已处理] Sort问题

czfolly
金牌服务用户   /  发表于:2016-4-29 17:10  /   查看:4119  /  回复:7
你好,关于排序的问题我想请教一下。

环境:WinForm + Spread7  (VS2013)
1.我现在是按A列 进行排序的,请问一下 B,C,D,E列能跟着A列一起排序吗?(代码不追加,想通过某个属性来设置)

2. 我现在的这个程序里边。 A列排序的时候,B列是根据什么排序的,随机的吗


blob495543517.png

WindowsApplication1.zip

90.03 KB, 下载次数: 278

7 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-29 17:27:19
沙发
我测试了您的代码其他列是和排序列一起排序的,这个是默认的。
A列排序,整行根据A列排序。
回复 使用道具 举报
czfolly
金牌服务用户   /  发表于:2016-4-29 17:31:57
板凳
不好意思  我可能 没有说清楚

我想要以下的效果。
A列降序,也想让B列降序。或者 让B列升序,请问有没有这样的 设置
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-29 18:22:20
地板
没有这样的属性,您需要代码实现 fpSpread1.ActiveSheet.SortRange
对一列的区域排序
回复 使用道具 举报
czfolly
金牌服务用户   /  发表于:2016-5-5 09:16:57
5#
本帖最后由 czfolly 于 2016-5-5 09:18 编辑

你好,你上边的回答我知道了,谢谢。
还有下面的问题 你帮我看看

我这里有一个例子
Case 1 : 条件 -- Form Load的时候 不对A,B列排序处理的话,
                       Load后 A列排序处理有(单击事件),这个时候A列不管是 升序 还是 降序,
                       B列 始终和Load后的状态是一样的,也就是说 没有任何排序

case 2 : 条件  -- Form Load的时候,对A,B进行 升序 处理。Load后 A,B列都是升序的状态
                        A列单击 也有排序 且 只有A列排序,这个时候,A列如果升序的话,B列也升序
                                                  A列降序的话,B列也降序。

现在有这么case 1,和case 2个差异 ,感觉Case 2有问题,为什么A列单击的时候 B列也会排序,
单击事件 里 只对A列进行了处理,并没有对B列处理,B列不应该排序才对。

对于Case 2有没有 不让B列跟着A列排序的方法。就像Case 1一样单击A列,B列的顺是默认的。
单元格数据是2的很明显。

blob387443541.png

WindowsApplication1.zip

90.44 KB, 下载次数: 300

サンプルのデータ比較.xlsx

10.95 KB, 下载次数: 278

Load 单击前后数据比较

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-5-5 10:38:16
6#
我看了下你代码 您click的时候 v_sortInfo(0)  和loud v_sortInfo(1) 不一致,应该得保持一致。
回复 使用道具 举报
czfolly
金牌服务用户   /  发表于:2016-5-6 09:38:38
7#
Click事件中 v_sortInfo(0)是从新New的,而且没有元素1的。只有0的,不明白你说的不一致 是什么意思

    Private Sub FpSpread1_CellClick(sender As Object, e As FarPoint.Win.Spread.CellClickEventArgs) Handles FpSpread1.CellClick

        If sort_flg = False Then
            sort_flg = True
        Else
            sort_flg = False
        End If

        'Me.FpSpread1_Sheet1.SortRows(0, sort_flg, True)


        Dim v_sortInfo(0) As FarPoint.Win.Spread.SortInfo

        v_sortInfo(0) = New FarPoint.Win.Spread.SortInfo(0, sort_flg, System.Collections.Comparer.Default)

        Me.FpSpread1_Sheet1.SortRows(0, Me.FpSpread1_Sheet1.RowCount, v_sortInfo)

    End Sub
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-5-6 16:05:09
8#
可能还是我理解有误,我描述下您的需求您看对吗
1. 数据加载后 按A,B进行 升序 处理 展示数据,A排序优先级高于b列。
2.当点击A列重新排序后,B列的顺序仍然按 升序 处理,和 对A列排序前一致。
就是您表格中右边所示。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部