我正要使用ExtJS 4制作一个基本的文件管理器。我现在面临的问题是:如何在单击列时为网格面板进行自定义排序。
假设我们有存储字段:
[
{ name: "is_dir", type: "boolean" },
{ name: "name", type: "string" },
{ name: "size", type: "int" }
]
以及来自数组的数据:
[
{ is_dir: true, name: "..", size: 0 },
{ is_dir: false, name: "file2.txt", size: 512 },
{ is_dir: true, name: "folder2", size: 0 },
{ is_dir: false, name: "file3.txt", size: 1024 },
{ is_dir: true, name: "folder1", size: 0 },
{ is_dir: true, name: "file1.txt", size: 1024 },
// ...
]
这个想法是像在任何文件管理器(例如Total Commander、MC、FAR等)中一样进行排序,这样:
- 名称为“..”的项目始终位于顶部
- dirs 以排序顺序在“..”(如果存在)之后
- 文件按排序顺序排在 dirs(如果存在)之后
例如,按名称和大小排序的输出应该是:
^ Name | Size Name | ^ Size
----------------------- -------------------------
.. | 0 .. | 0
folder1 | 0 folder1 | 0
folder2 | 0 folder2 | 0
file1.txt | 1024 file2.txt | 512
file2.txt | 512 file1.txt | 1024
file3.txt | 1024 file3.txt | 1024
我试图sorterFn
为商店sorters
属性编写自定义,但它没有帮助。我相信应该有一些简单的解决方案。