Flex 3 中的 AdvancedDatagrid 排序
我在 Flex 3 中使用 AdvancedDatagrid。AdvancedDatagrid 的一列包含数字和字母。当我对此列进行排序时,数字位于字母之前(AdvancedDatagrid 内部排序的默认行为)。但我希望排序时字母位于数字之前。
我知道我必须编写自定义排序函数。但任何人都可以给出一些关于如何进行的想法吗?
提前致谢。
I am using AdvancedDatagrid in Flex 3. One column of AdvancedDatagrid contains numbers and alphabets. When I sort this column, numbers come before alphabets (Default behavior of internal sorting of AdvancedDatagrid). But I want alphabets to come before number when I sort.
I know I will have to write the custom sort function. But can anybody give some idea on how to proceed.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 sortCompareFunction
尝试以下排序比较函数。
它检查字符串的第一个字符,并将以数字开头的字符按排序顺序向下推送。它使用 localeCompare 来比较两个字符串,如果它们都以字母或数字开头 - 否则它表示以字母开头的应该位于以数字开头的前面。因此,
abc
将位于123
之前,但a12
仍将位于abc
之前。如果您想要一种完全不同的排序,其中字母始终位于数字之前,无论它们在字符串中的位置如何,您必须从头开始编写一个 - String::charCodeAt 可能是一个不错的起点。
Use sortCompareFunction
Try the following sort compare function.
It checks the first character of strings and pushes the ones that start with a digit downwards in the sort order. It uses localeCompare to compare two strings if they both start with letters or digits - otherwise it says the one starting with a letter should come before the one with digit. Thus
abc
will precede123
buta12
will still come beforeabc
.If you want a totally different sort where letters always precede numbers irrespective of their position in the string, you would have to write one from the scratch - String::charCodeAt might be a good place to start.