1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //Grid.onHeaderCellMouseDown 事件就是鼠标点击表头所触发的事件。 // 我们所要做的就是把这一事件的处理函数重定向到我们自己定义的排序方法。 modelGrid.onHeaderCellMouseDown = function(e){ modelGrid._setStore(null); var instancesArr = new Array(); // 定义一个数组存放排序临时数据 var allselRrd=dojo.byId('checkcollection').checked;// 记录表头上的“全选”状态 columnSort=e.cellIndex; var propSort=modelGridLayout[0].cells[e.cellIndex].name; // 记录排序的项目 if(columnSort!=0){ sortAscending=!sortAscending; // 设置正向排序还是逆向排序 for(var i=0;i <modelStore._arrayOfTopLevelItems.length;i++){ instancesArr.push(modelStore._arrayOfTopLevelItems); } sortmodelGrid(instancesArr,propSort); // 重写 sort 函数 modelStore._arrayOfTopLevelItems=instancesArr; modelGrid._setStore(modelStore); UpdateHeaderView(); // 更新表头 } dojo.byId('checkcollection').checked=allselRrd; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | // 根据所在列的内容的属性定制适合的 Sort 函数 function sortmodelGrid(arr,propSorter) { var comp=1; var asc=1; if(sortAscending){ asc=1;} else{ asc=-1;} for(var i=0;i < (arr.length);i++){ for(var j=0;j <(arr.length-1-i);j++){ var aProp=eval("arr[j]."+propSorter+"[0]"); var bProp = eval("arr[j+1]."+propSorter+"[0]"); if(IsNumber(aProp)&& IsNumber(bProp)){ // 如果是数字就直接排序 } else{ // 如果是子母就先转换成小写再排序 aProp= aProp.toLowerCase(); bProp = bProp.toLowerCase(); } if(aProp > bProp){ comp=1;} else if(aProp < bProp){ comp=-1;} else{ comp=0;} if((comp*asc) >0){ var Itemm=arr[j+1]; arr[j+1]=arr[j]; arr[j]=Itemm; } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // 增加一个向上或者向下的箭头来标识当前表格的某列是按升序还是降序排列,便于用户识别 function UpdateHeaderView(){ var docnObj=document.getElementsByTagName("th"); for(var i=0;i < 5;i++){ var docnObjName=modelGridLayout[0].cells.name; var ret = [ '<div class="dojoxGridSortNode' ]; if(i==columnSort){ // 通过判断 sortAscending 是 true 还是 false 来认知当前是升序还是降序排列 // 根据排列顺序来修改表头的 css ret = ret.concat([' ',(sortAscending ==true)?'dojoxGridSortUp':'dojoxGridSortDown','"> <div class="dojoxGridArrowButtonChar">',(sortAscending ==true)? '▲':'▼', '</div ><div class="dojoxGridArrowButtonNode" ></div >' ]); ret = ret.concat([propSort, '</div >']); } else{ ret.push('">'); ret = ret.concat([docnObjName, '</div >']); } docnObj.innerHTML=ret.join(" "); } } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |