提高 Dojo Grid 的数据处理性能
2010-05-24 00:00:00 来源:WEB开发网清单 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);// 更新行视图
}
}
- ››提高安全性 防止路由器被攻击破解
- ››提高Windows内存使用效率的技巧
- ››提高网站转化率篇之巧用预售页面
- ››提高你的Win7 操作系统的响应速度
- ››Dojo QuickStart 快速入门教程 (4) 简单的测试框架...
- ››Dojo QuickStart 快速入门教程 (5) 使用数组
- ››Dojo QuickStart Guide 快速入门 Why Dojo
- ››Dojo Quick Start Guide 快速入门 (2) 基本框架
- ››Dojo QuickStart 快速入门教程 (3) 选择器
- ››Dojo Javascript 编程规范 [1]
- ››Dojo Javascript 编程规范 [2]
- ››Dojo Javascript 编程规范 [3]
更多精彩
赞助商链接