在父子关系中绑定 Html Grid 中的数组并按排序列排序
Unformatted array: var data = [
{ index : 1, parent : null,sort:0 },
{ index : 2, parent : null ,sort:1},
{ index : 3, parent : 2 , sort:0},
{ index : 4, parent : null,sort:2},
{ index : 5, parent : 4,sort:0 },
{ index : 6, parent : 5 ,sort:0},
{ index : 7, parent : 5 ,sort:1},
{ index : 8, parent : 6 ,sort:0},
{ index : 9, parent : 2 ,sort:2},
{ index : 10, parent : 2 ,sort:1},
];
if data binds looks like this ,Example
Parent 1
Child 12
Child 1.1
Subchild 1.1.2
Subchild 1.1.1
Subchild 1.2.2
Subchild 1.2.1
结果应该如下
formatted array: var data = [
{ index : 1, parent : null,sort:0 },
{ index : 2, parent : null ,sort:1},
{ index : 3, parent : 2 , sort:0},
{ index : 10, parent : 2 ,sort:1},
{ index : 9, parent : 2 ,sort:2},
{ index : 4, parent : null,sort:2},
{ index : 5, parent : 4,sort:0 },
{ index : 6, parent : 5 ,sort:0},
{ index : 8, parent : 6 ,sort:0},
{ index : 7, parent : 5 ,sort:1},
];
我想像这样绑定 -->
Parent 1
--> Child 1.1
--> Subchild 1.1.1
--> Subchild 1.1.2
--> Child 12
--> Subchild 1.2.1
--> Subchild 1.2.2
以下是我现在使用的解决方案,如果数组有大数据,则需要更多时间来绑定网格
function Ordering(Data,successCallBack) {
var Grid= [];
var parentdata=[];
$.each(Data, function (key, value) {
if (value.parent== null) {
parentdata.push(value);
}
});
$.each(parentdata, function (key, value) {
child(Requirements, value, Grid, function (Order) {
successCallBack(Order);
});
});
}
function child(data, parentdata, Grid, successCallBack) {
Grid.push(parentdata);
$.each(data, function (key, value) {
if (parentdata== value.parent) {
child(data, value, Grid, function () { });
}
});
if (Grid.length == Grid.length) {
successCallBack(Grid);
}
}