找回密码
 立即注册

QQ登录

只需一步,快速开始

FBAccount

中级会员

21

主题

73

帖子

701

积分

中级会员

积分
701

活字格认证

FBAccount
中级会员   /  发表于:2015-1-23 09:27  /   查看:16728  /  回复:17
目前使用DataTable做为c1Flexgrid绑定,需要用到满多自定义排序的部分~ 但
IComparer 做下去似乎不会更新到画面上~ 请问有简单的DEMO吗??

有的部分可能同时会用到其他隐藏域的数据,但排序后若数据异动
Ex. 对Data做值的更动,希望 排序的三角形箭头不会跟着改变,而是程序撰写来决定

17 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-1-23 10:21:00
沙发
回复 1楼FBAccount的帖子

有关自定义Sort,你可以参考如下路径的自定义排序示例:
\Documents\ComponentOne Samples\Studio for WinForms\C1FlexGrid\CS\CustomSort

将C1FlexGrid.ShowSortPosition设置为None,三角箭头就不会出现。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
FBAccount
中级会员   /  发表于:2015-1-23 10:58:00
板凳
回复 1楼FBAccount的帖子

有关自定义Sort,你可以参考如下路径的自定义排序示例:
\Documents\ComponentOne Samp
Alice 发表于 2015-1-23 10:21:00


感谢回应,刚看了一下,这是非绑定的DEMO,非绑定的情况下我本可以正确作用,想请教的是绑定DataTable状态~
因绑定DataTable状态采用
Sort(SortFlags order, int col)
Sort(SortFlags order, int col1, int col2)
等API皆可正确使用,然而绑定状态下使用IComparer comparer则不行,但非绑定的状态下可以~
那使用DataTable 绑定下,要如何自定义排序呢??
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-1-23 12:09:00
地板
回复 3楼FBAccount的帖子

IComparer在Unbound模式下才起作用。
如果想自定义Sort,可以使用BeforeSort和AfterSort事件,
在BeforeSort事件里,可以定义你的排序规则。
  1. var dt = _flex.DataSource as DataTable;
复制代码

这句代码可以获取到数据源。接下来就是对DataTable进行排序了,
具体的网络上有很多资料,比如msdn的链接:https://msdn.microsoft.com/zh-cn ... .dataview.sort.aspx

这就要根据你的具体需求来实现。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
FBAccount
中级会员   /  发表于:2015-1-23 15:01:00
5#
回复 3楼FBAccount的帖子

IComparer在Unbound模式下才起作用。
如果想自定义Sort,可以使用BeforeSort和After
Alice 发表于 2015-1-23 12:09:00


数据源我本就拿得到~ 但其排序部份得采用DefaultView.Sort,填入相关string
若用自行定义部分,转DataTable出来必需直接填入c1Flexgrid.DataSource,取代原有的DataTable, UI才会进行变更~

然而我DataTable数据源并不要进行置换~ 若采用Flexgrid其他API如:Sort(SortFlags pFlag, int col)则可以直接对UI进行排序,不影响到数据源,但却不能自己定义排序的规则

我需要能够不影响 DataTable情况下进行排序,这样取消排序较方便,且需要能够自行定义排序的规则

还请版主大力帮忙
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-1-23 16:51:00
6#
回复 5楼FBAccount的帖子

很抱歉,如果IComparer不能实现的话,又不能使用DataTable,我也没用更好的建议和方法。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
FBAccount
中级会员   /  发表于:2015-1-26 10:58:00
7#
回复 5楼FBAccount的帖子

很抱歉,如果IComparer不能实现的话,又不能使用DataTable,我也没用更好的建议和方法。
Alice 发表于 2015-1-23 16:51:00


版主~
因我使用过DefaultView.Sort方法,抑或是c1Flexgrid.Sort方法,皆可以排序,问题是说,当我更新了数据表时,在某些状况下排序的箭头会变更Column

例如说 我点击 Column01,而实际要用Column02进行排序,各种方法利用BeforeSort都可以办到~
这时候排序箭头也在Column01没问题,但这时候倘若我对绑定数据做修改的动作,例如我对Column03某个Cell做值的修改,这时候Column02就自动出现排序箭头,然而因我想使箭头仍在Column01上

例如说倘若Column02是隐藏的Column,Column01实际上点排序是使用Column02的值,类似这种状况,并对DataTable某Cell用代码去编修,箭头不要乱跑


以下是我用各种方法去实验的简单DEMO(所以写得很乱),最后仍弄不出来,只要一对DataTable某做修改,箭头就会自动跑走~ 若不管箭头的话,现有许多方法都可以办得到
鼠标点击 Accn Column,使用 col01去排序,新增一column做实际排序~
接着按下button1,将col02全部改成123,三角形箭头就自动跑到那个新增的column了~

就c1Flexgrid提共的API来看,连新增Column都不用,就可以做到用其他Column排序~

现在问题就是~ 修改Cell 三角箭头会跑到实际排序的column上~
C1Flexgrid 难道不能针对绑定数据下,使用隐藏域排序,但排序的三角箭头在修改过表格某一Cell后仍在原来的位置上吗??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-1-26 13:42:00
8#
回复 7楼FBAccount的帖子

和你确认下需求:是需要在排序的过程中控件Sort的三角箭头?
Demo已经下载,测试后会给你个回复。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
FBAccount
中级会员   /  发表于:2015-1-26 15:25:00
9#
回复 7楼FBAccount的帖子

和你确认下需求:是需要在排序的过程中控件Sort的三角箭头?
Demo已经下载,测试后会给你个回复。
Alice 发表于 2015-1-26 13:42:00


感谢
1.        表格为绑定数据源(DataTable)
2.        点击Column header,产生Sort三角箭头只存在原点击的Column
(点Column1就在Column1产生,点Column2就Column2产生)
3.        Column Header被点击后,其排序可使用隐藏Column的排序(或是某个自定义集合作为依据,而非该Column的DisplayData作为依据)
4.        承第三项状况下,Sort状态时变更DataTable内的值,原点击的Column Header三角箭头仍在原处变更,不会跑到隐藏的那个Column Header

谢谢版主~
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-1-26 17:36:00
10#
回复 9楼FBAccount的帖子

收到。
正在进行需求的调试,预计最晚明天给你一个反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

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