親子関係の 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);
}
}