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

提高 Dojo Grid 的数据处理性能

 2010-05-24 00:00:00 来源:WEB开发网   
核心提示: 清单 4. Grid connect eventh.push(this.connect(this.Store,"onSet","_onSet"));h.push(this.connect(this.Store,"onNew","

清单 4. Grid connect event

    
 h.push(this.connect(this.Store, "onSet", "_onSet")); 
 h.push(this.connect(this.Store, "onNew", "_onNew")); 
 h.push(this.connect(this.Store, "onDelete", "_onDelete")); 

清单 5 展示了 Store 的 _onNew 事件处理函数。当程序使用 newItem 往 Store 里增加数据时 , Store 在完成添加操作后会发出一个 dojo.data.api.Notification —— this.onNew(newItem, pInfo); Grid 监听到了这个 Notification 后就会调用之前定义过的 _onNew 处理函数,对自身进行操作。Grid 会分别更新自己的行数,增加新项目 (_addItem),如有需要打印一些消息。

清单 5. Store _onNew()

   
 _onNew: function(Item, parentInfo){ 
 this.updateRowCount(this.rowCount+1); // 更新行数 
 this._addItem(Item, this.rowCount-1); // 增加新 Item 
 this.showMessage(); // 打印某些信息 
 } 

在上面的三个步骤中,增加新的 Item 是最关键的。_addItem 的操作包括了获得新项目的 Identity,分配 Identity 空间,向 Identity 空间填充 Item,以及更新行视图(添加新的 dom 节点)。具体过程如清单 6 中所示。

清单 6. Grid _addItem()

   
 _addItem: function(Item, index, noUpdate){ 
 var idty = this._hasIdentity ? this.Store.getIdentity(Item) : dojo.toJson(this.query) + 
  ":idx:" + index + ":sort:" + dojo.toJson(this.getSortProps()); // 获得 Identity 
 var o = { idty: idty, Item: Item }; // 分配获得空间 
 this._by_idty[idty] = this._by_idx[index] = o;// 向 Identity 空间填充 Item 
 if(!noUpdate){ 
 this.updateRow(index);// 更新行视图 
 } 
 } 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:提高 Dojo Grid

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