ObjectStore onFetch方法获取记录总数
2014-11-04 16:40
375 查看
转自:http://blog.csdn.net/earthhour/article/details/38686029
ObjectStore onFetch方法获取记录总数
可以有两种方法,假设使用场景是JsonRest+ObjectStore组合为grid提供懒加载数据。
方法一、对store中的数据进行预处理。
[javascript] view plaincopy
var json = new JsonRest({
target: url
});
var store = new ObjectStore({objectStore: json});
store.onFetch = function(results){
results.forEach(function(item){
// 在这里预处理数据
if(item.admin == '1'){
item.admin = '是';
}else{
item.admin = '否';
}
});
};
方法二、在grid的structure中预处理。
[javascript] view plaincopy
var layout = [
[{
'name': 'Column 1',
'field': 'id',
'width': '100px'
}, {
'name': 'Column 2',
'field': 'admin',
'width': '100px',
get: function(colIndex, item) {
// processing data
if (item.admin == '1') {
return '是';
} else {
return '否';
}
}
}, {
'name': 'Column 3',
'field': 'desc',
'width': '200px'
}]
];
另外,遇到带内部对象的json数据,例如:
{"name":"陈","age":"24","phone":{"company":"123","home":"456","private":"789"}}
我们想把内部对象的属性company显示到grid,如果这样写'field': 'phone.company'肯定行不通,所以也适合用上面提到的两种方法之一进行转换。
假如采用第二种方法:
[javascript] view plaincopy
{
'name': 'Column 2',
'field': 'phone.company',
'width': '100px',
get: function(colIndex, item) {
// processing data
return item.phone.company;
}
}
2014-5-13更新:
采用第二种方法时,对grid刷新会不起作用,就是由于get方法导致。代码如下:
[javascript] view plaincopy
Grid.resize();
Grid._refresh();
目前原因不清楚。所以如果需要用到grid刷新,还是采用第一种方式
ObjectStore onFetch方法获取记录总数
require(['dojo/when']); var json = new JsonRest({target: url}); store = new ObjectStore({objectStore: json}); store.onFetch = function(results){ // 方法一: results.then(function(rs){ console.log('rs len->',rs.length); }); // 方法二: when(results, function(results){ console.log('when->',results.length); console.dir(results); }); };
dojo小例子(14)对提供给grid显示的数据进行预处理
有时我们从后台获取的数据不一定能满足页面显示的需求,比如后台数据中某个字段值是“1/0”,但是显示时我们希望显示为“是/否”。这就需要对数据进行转换,也就是预处理。可以有两种方法,假设使用场景是JsonRest+ObjectStore组合为grid提供懒加载数据。
方法一、对store中的数据进行预处理。
[javascript] view plaincopy
var json = new JsonRest({
target: url
});
var store = new ObjectStore({objectStore: json});
store.onFetch = function(results){
results.forEach(function(item){
// 在这里预处理数据
if(item.admin == '1'){
item.admin = '是';
}else{
item.admin = '否';
}
});
};
方法二、在grid的structure中预处理。
[javascript] view plaincopy
var layout = [
[{
'name': 'Column 1',
'field': 'id',
'width': '100px'
}, {
'name': 'Column 2',
'field': 'admin',
'width': '100px',
get: function(colIndex, item) {
// processing data
if (item.admin == '1') {
return '是';
} else {
return '否';
}
}
}, {
'name': 'Column 3',
'field': 'desc',
'width': '200px'
}]
];
另外,遇到带内部对象的json数据,例如:
{"name":"陈","age":"24","phone":{"company":"123","home":"456","private":"789"}}
我们想把内部对象的属性company显示到grid,如果这样写'field': 'phone.company'肯定行不通,所以也适合用上面提到的两种方法之一进行转换。
假如采用第二种方法:
[javascript] view plaincopy
{
'name': 'Column 2',
'field': 'phone.company',
'width': '100px',
get: function(colIndex, item) {
// processing data
return item.phone.company;
}
}
2014-5-13更新:
采用第二种方法时,对grid刷新会不起作用,就是由于get方法导致。代码如下:
[javascript] view plaincopy
Grid.resize();
Grid._refresh();
目前原因不清楚。所以如果需要用到grid刷新,还是采用第一种方式
相关文章推荐
- dojo小例子(26)ObjectStore onFetch方法获取记录总数
- Mysql获取id最大值、表的记录总数等相关问题的方法汇总
- PHP使用mysql_fetch_object从查询结果中获取对象集的方法
- MSSQLSERVER中如何快速获取表的记录总数
- MS SQLSERVER中如何快速获取表的记录总数
- VS2005中获取新增记录的ID方法总结
- sql 问题 select permission denied on object 'pb_userinfo',database 'Maching',owner'ado' 解决方法
- MS SQLSERVER中如何快速获取表的记录总数
- SQL Server 如何快速获取表的记录总数
- SQL Server快速获取表的记录总数
- 如何插入一条记录获取插入后的自动增长ID列的方法.
- 如何插入一条记录获取插入后的自动增长ID列的方法.
- MS SQL Server分页通用存储过程(获取每一页和记录总数)
- MS SQLSERVER中如何快速获取表的记录总数
- MS SQLSERVER中如何快速获取表的记录总数
- 获取表的记录总数
- MS SQLSERVER 2000 中如何快速获取表的记录总数
- MS SQLSERVER中如何快速获取表的记录总数
- ObjectDataSource作数据源,获取总记录数的方法
- 插入数据后, 获取该记录id的方法