请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

willsHuang

注册会员

5

主题

21

帖子

197

积分

注册会员

积分
197

活字格认证

willsHuang
注册会员   /  发表于:2015-10-20 14:27  /   查看:5371  /  回复:5
您好:

我們使用 GcMultiRow 8.20.20143.0,
並且也學習到如何使用 ColumnHeaderCell.SortMode  及 ColumnHeaderCell.DropDownList
來進行單欄位的 排序與篩選。

進一步想請教的是,GcMultiRow 是否能支援同時 使用 多個 Column(Cell) 的值來作為排序條件,
類似 SQL 指令中的 Order By Cell1 , Cell2, Cell3 的功能。

以上,煩請,指導一下。

謝謝

5 个回复

倒序浏览
rbgongming
论坛元老   /  发表于:2015-10-20 15:37:00
沙发
回复 1楼willsHuang的帖子

你好,非常感谢你的问题反馈。
我现在的工作环境没有该控件,但是还是帮你查找了一下解决方法。
代码运行效果我没有确认,非常抱歉,你可以参照如下代码,试一试
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim template1 As Template = Template.CreateGridTemplate(2)
  GcMultiRow1.Template = template1
  GcMultiRow1.RowCount = 10
  GcMultiRow1.AllowUserToAddRows = False

  Dim r As New Random()
  For i As Integer = 0 To GcMultiRow1.RowCount - 1
    GcMultiRow1.SetValue(i, 0, r.[Next](1, 3))
    GcMultiRow1.SetValue(i, 1, r.[Next](1, 100))
  Next
End Sub

Private Sub GcMultiRow1_CellClick(ByVal sender As Object, ByVal e As CellEventArgs) Handles GcMultiRow1.CellClick
  If e.Scope = CellScope.ColumnHeader Then
    Dim chCell As ColumnHeaderCell = GcMultiRow1.ColumnHeaders(0).Cells(e.CellIndex)
    If chCell.SortGlyphDirection = SortOrder.Ascending Then
      chCell.SortGlyphDirection = SortOrder.Descending
    Else
      chCell.SortGlyphDirection = SortOrder.Ascending
    End If

    Dim si0 As SortItem = New SortItem(0, SortOrder.None)
    Dim si1 As SortItem = New SortItem(1, SortOrder.None)

    Select Case e.CellIndex
      Case 0
        si0.SortOrder = chCell.SortGlyphDirection
        Exit Select
      Case 1
        si0.SortOrder = DirectCast(GcMultiRow1.ColumnHeaders(0).Cells(0), ColumnHeaderCell).SortGlyphDirection
        si1.SortOrder = chCell.SortGlyphDirection
        Exit Select
    End Select

    GcMultiRow1.Sort(New SortItem() {si0, si1})

  End If
End Sub

如果不能解决你的需求,欢迎再次反馈。

评分

参与人数 1金币 +999 满意度 +5 收起 理由
Alice + 999 + 5 奖励金币

查看全部评分

把简单的事做好就是不简单,
把平凡的事做好就是不平凡。
回复 使用道具 举报
willsHuang
注册会员   /  发表于:2015-10-20 16:26:00
板凳
您好:

非常感謝您迅速的回饋,剛剛試了,已經可以了,
能否進一步,請教一下,
GcMultiRow1.Sort(New SortItem() {si0, si1})
其中,SortItem() 是否有數目上的限制呢 ...?

以上,煩請,指導一下。

謝謝
回复 使用道具 举报
rbgongming
论坛元老   /  发表于:2015-10-20 16:33:00
地板
回复 3楼willsHuang的帖子

你好,非常感谢你的反馈

对于这个问题我也不是特别了解,我电脑上没有这个控件的环境,不过个人认为
几十个是应该没有问题的。具体上限我也不是特别了解,这个问题还是请Alice
女神回复你吧!

再此对你使用本产品非常感谢!!!如有什么问题欢迎反馈哦!!!
把简单的事做好就是不简单,
把平凡的事做好就是不平凡。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-10-20 17:32:00
5#
回复 3楼willsHuang的帖子

默认情况下,可以通过设置SortMode来实现单列的排序,click columnheader就会自动排序。
这种情况下,是不支持多列排序的。
但是MultiRow提供了Sort方法,可以实现更多样化的排序。Sort方法是个构造方法,里面有多样化参数。
你可以针对某一列进行升序或是降序排序,还可以继承IComparer接口,写自己的排序sort逻辑。这个接口是.net的接口,可以在网络上查到很多资料如何写。
其中一种的Sort方法就是Sort(SortItem[] sort),可以实现多个列排序,对具体的几个列没有限制,但这些SortItem的CellIndex是限制在0到MultiRow的列数之间。就是说你最多只能对Multirow的所有列进行排序,不能多与这些列。

评分

参与人数 1满意度 +10 收起 理由
rbgongming + 10 感謝您,非常清楚的回覆。

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-10-28 16:49:00
6#
回复 4楼rbgongming的帖子

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢        

您可以关注我们的微信服务号(微信号:GrapeCityDT),帖子有回复时可即时收到提醒,便于您第一时间查看,尽快解决技术问题。关注即可获得300金币用于兑换礼品。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部