WEB开发网
开发学院软件开发Java 提高 Dojo Grid 的数据处理性能 阅读

提高 Dojo Grid 的数据处理性能

 2010-05-24 00:00:00 来源:WEB开发网   
核心提示: Step3. 重构 Grid 的排序方法 Grid 具有排序功能,点击表头可以实现对表格内容升序或者降序排列,提高 Dojo Grid 的数据处理性能(10),每次排序的操作都是针对 Grid 加载进来的数据进行的, 排序后,便于用户识别, 清单 9. 重新定义 onHeaderCellMous

Step3. 重构 Grid 的排序方法

Grid 具有排序功能,点击表头可以实现对表格内容升序或者降序排列。每次排序的操作都是针对 Grid 加载进来的数据进行的。 排序后,当需要对数据操作时,还是先通过 Grid.getItem(idx) 获得 Item,然后依靠 Item 特有的 identifier 索引到 Store 中的真实数据, 再对数据进行修改。

然而因为“lazy loading”的存在,Grid 并没有把所有数据同时加载进来,这就导致了 Grid 排序后会出现数据获得错误和数据索引错误。 所以为了保证数据索引正确,就需要从数据源上对数据进行排序,这样才能保证 Grid 和 Store 中的数据顺序保持一致。

具体做法是先禁用 Grid 的默认 sort 方法:canSort="false"。然后重新定义 Grid.onHeaderCellMouseDown 的响应函数, 重构 sort 函数,以及更新 Grid 标题视图。这样就可以保证 Grid 的排序功能正常运行。

清单 9 展示了重新定义 onHeaderCellMouseDown 的响应函数的过程。函数定义了一个数组来存放临时变量,并且记录了表头上是否存着“全选”。 接着函数寻找记录需要排序的项目,接着设置此次排序是顺序还是逆序排列。设置完成后,就调用自定义的 sort 函数对数据进行排序。排序完后 对表头进行一定的修改,增加一个向上或者向下的箭头来标识当前表格的某列是按升序还是降序排列,便于用户识别。

清单 9. 重新定义 onHeaderCellMouseDown 的响应函数

 //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[i]); 
  } 
 sortmodelGrid(instancesArr,propSort); // 重写 sort 函数 
 modelStore._arrayOfTopLevelItems=instancesArr; 
 modelGrid._setStore(modelStore); 
 UpdateHeaderView(); // 更新表头 
 } 
 dojo.byId('checkcollection').checked=allselRrd;  
 }    

上一页  5 6 7 8 9 10 

Tags:提高 Dojo Grid

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接