* 功能:下面方法功能是对js框架dhtmlx的表格控件dhtmlxgrid对象一次刷新
* 背景:本方法的应用背景是对mygrid内多行进行拖动排序,排序原理是先获取行的初始位置,目标位置,然后获取以数组形式获取mygrid中的数据(行id,每一个单元格的数据),将数组进行排序后重新填充进原表格mygrid
* 参数:参数array是将要重新填充进表格的数组数据,参数mygrid的是将要操作的dhtmlxgrid对象
*/
function reCreatMygrid(array,mygrid){ //刷新新的指标列表
mygrid.clearAll(false); //不清除表头
var cellIndicatorArrayLength = mygrid.getColumnsNum()+1; //单位指标的数组长度(所有列的值加上行id)
var newArray=[]; //用来存储指标列表内容
var newArrayId=[]; //用来存储新列表的Id
/*
* 因为是提供给所有已定义dhtmlxgrid表格应用接口,所以每个表格的列数有差异
*/
if(cellIndicatorArrayLength==7){ //如果表格总共有6列
for( var i=0;i<array.length;i=i+7){
newArray.push([array[i],array[i+1],array[i+2],array[i+3],array[i+4],array[i+5]]);
newArrayId.push(array[i+6]);
}
}else if(cellIndicatorArrayLength==6){ //如果表格总共有5列
for( var i=0;i<array.length;i=i+6){
newArray.push([array[i],array[i+1],array[i+2],array[i+3],array[i+4]]);
newArrayId.push(array[i+5]);
}
}else if(cellIndicatorArrayLength==5){ //如果表格总共有4列
for( var i=0;i<array.length;i=i+5){
newArray.push([array[i],array[i+1],array[i+2],array[i+3]]);
newArrayId.push(array[i+4]);
}
}else if(cellIndicatorArrayLength==4){
for( var i=0;i<array.length;i=i+4){
newArray.push([array[i],array[i+1],array[i+2]]);
newArrayId.push(array[i+3]);
}
}else if(cellIndicatorArrayLength==3){
for( var i=0;i<array.length;i=i+3){
newArray.push([array[i],array[i+1]]);
newArrayId.push(array[i+2]);
}
}
//将数据填充进表格(dhtmlxgrid提供的接口)
mygrid.parse(newArray,"jsarray" );
/*
* dhtmlxgrid提供的数组填充方式不能为其赋予行id,初始化后为默认id,即1,2,3……
* 现在我们必须把每行原有的id赋给每一行
*/
for( var j=0;j<mygrid.getRowsNum();j++){
mygrid.setRowId(j, newArrayId[j]);
}
}
mygrid.clearAll(false); //不清除表头
var cellIndicatorArrayLength = mygrid.getColumnsNum()+1; //单位指标的数组长度(所有列的值加上行id)
//var newArray=[]; //用来存储指标列表内容
//var newArrayId=[]; //用来存储新列表的Id
var rowsArray = []; //存放行数据的数组[{"id":行id,"data":本行每一列的数据数组}]
var dataAll = {};
if(cellIndicatorArrayLength==7){ //如果表格总共有5列
for( var i=0;i<array.length;i=i+7){
//newArray.push([array[i],array[i+1],array[i+2],array[i+3],array[i+4],array[i+5]]);
//newArrayId.push(array[i+6]);
rowsArray.push({"id":array[i+6], "data":[array[i],array[i+1],array[i+2],array[i+3],array[i+4],array[i+5]]});
}
}else if(cellIndicatorArrayLength==6){ //如果表格总共有5列
for( var i=0;i<array.length;i=i+6){
//newArray.push([array[i],array[i+1],array[i+2],array[i+3],array[i+4]]);
//newArrayId.push(array[i+5]);
rowsArray.push({"id":array[i+5], "data":[array[i],array[i+1],array[i+2],array[i+3],array[i+4]]});
}
}else if(cellIndicatorArrayLength==5){ //如果表格总共有4列
for( var i=0;i<array.length;i=i+5){
//newArray.push([array[i],array[i+1],array[i+2],array[i+3]]);
//newArrayId.push(array[i+4]);
rowsArray.push({"id":array[i+4], "data":[array[i],array[i+1],array[i+2],array[i+3]]});
}
}else if(cellIndicatorArrayLength==4){
for( var i=0;i<array.length;i=i+4){
//newArray.push([array[i],array[i+1],array[i+2]]);
//newArrayId.push(array[i+3]);
rowsArray.push({"id":array[i+3], "data":[array[i],array[i+1],array[i+2]]});
}
}else if(cellIndicatorArrayLength==3){
for( var i=0;i<array.length;i=i+3){
//newArray.push([array[i],array[i+1]]);
//newArrayId.push(array[i+2]);
rowsArray.push({"id":array[i+2], "data":[array[i],array[i+1]]});
}
}
dataAll.rows=rowsArray;
mygrid.parse(dataAll,"json" );
//mygrid.parse(newArray,"jsarray");
//for(var j=0;j<mygrid.getRowsNum();j++){ //为新列表附上行id
// mygrid.setRowId(j, newArrayId[j]);
//}
}
mygrid.clearAll(false); //不清除表头
var cellIndicatorArrayLength = mygrid.getColumnsNum()+1; //单位指标的数组长度(所有列的值加上行id)
var rowsArray = []; //存放行数据的数组[{"id":行id,"data":本行每一列的数据数组}]
var dataAll = {};
for( var i=0;i<array.length;i=i+cellIndicatorArrayLength){
var data = [];
for( var n=0;n<cellIndicatorArrayLength-1;n++){
data.push(array[i+n]);
}
rowsArray.push({"id" :array[i+cellIndicatorArrayLength-1],"data":data});
}
dataAll.rows=rowsArray;
mygrid.parse(dataAll,"json" );
}