Ext中json和record的转换

幸福小猪的MM 2011-12-05 04:00:13
// 数据源代理  
this.dataProxy = new Ext.data.HttpProxy({
url:'cbi/manage/index/list.do'

});

var store = new Ext.data.JsonReader({
root:'data',
totalProperty:'count',
id: 'caPk'
}, this.Record)
// 创建数据源
this.ds = new Ext.data.Store({
proxy:this.dataProxy,
pruneModifiedRecords : true,
autoLoad:false,
listeners:{
datachanged:clearAllSelectedcheckBox,
load:function(){
alert("翻页呢哦");
alert("选择的IDs:"+exportIds);
alert(store);
var records = new Array();
for(var i=0;i<store.jsonData.data.length;i++){
if (exportIds.contains(store.jsonData.data[i].caPk)){
//???????我想将加载的数据放在records中,
//这里似乎需要json数据和record的转换,???
records.push(store.jsonData.data[i]);
}

}
//selModel是分页的Grid的选择模型,实现翻页后,之前选择的记录扔保持选中状态。??未实现啊
selModel.selectRecords(records, true);// 以后每次load数据时,都会默认选中
}
},
reader: store
});
...全文
442 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
幸福小猪的MM 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hookee 的回复:]

JScript code
var obj = {xx:xxx,xx:xxx}; //按照record定义顺序的json对象
var Record = store.recordType;
var r = new Record(obj); //转成Record
store.insert(0, r); //插入store
[/Quote]

正解,

再请教一个问题:

//翻页时清空上页的全选Header被选中状态
function clearAllSelectedcheckBox(){
var hd = Ext.fly(Ext.getCmp('caseListGrid').getView().innerHd).child('div.x-grid3-hd-checker');
hd.removeClass('x-grid3-hd-checker-on');
Ext.getCmp('caseListGrid').getSelectionModel().clearSelections();
}
this.Record = Ext.data.Record.create([
{name: 'caDeptCode', mapping: 'caDeptCode'},
{name: 'caSex', mapping: 'caSex'},
{name: 'caInpNo', mapping: 'caInpNo'},
{name: 'caName', mapping: 'caName'},
{name: 'caVisitId', mapping: 'caVisitId'},
{name: 'caPk', mapping: 'caPk'},
{name: 'caPatientId', mapping: 'caPatientId'},
{name: 'caMainDiagnose', mapping: 'caMainDiagnose'},
{name: 'caBloodType', mapping: 'caBloodType'},
{name: 'caAge', mapping: 'caAge'}
]);

//Grid的选择模型
var selModel = new Ext.grid.CheckboxSelectionModel({
listeners:{
//选择时
'rowselect':{
fn : function(e,rowIndex,record){
if(!exportIds.contains(record.data.caPk)){
exportIds.push(record.data.caPk);
recordsChecked.push(record);
}
/**选中导出记录的总条数*/
Ext.getCmp("addexport").setText("已选中"+(exportIds.length).toString()+"条");
}
},
//反选时
'rowdeselect':{
fn : function(e,rowIndex,record){
if(exportIds.contains(record.data.caPk)){
exportIds.remove(record.data.caPk);
recordsChecked.remove(record);
}
Ext.getCmp("addexport").setText("已选中"+(exportIds.length).toString()+"条");
}
}
}
});

// 数据源代理
this.dataProxy = new Ext.data.HttpProxy({
url:'cbi/manage/index/list.do'

});

var store = new Ext.data.JsonReader({
root:'data',
totalProperty:'count',
id: 'caPk'
}, this.Record)
// 创建数据源
this.ds = new Ext.data.Store({
proxy:this.dataProxy,
pruneModifiedRecords : true,
autoLoad:false,
listeners:{
datachanged:clearAllSelectedcheckBox,
load:function(){

alert("翻页呢哦");
alert("选中的IDs:"+exportIds);
alert(store);
var records = new Array();
for(var i=0;i<store.jsonData.data.length;i++){
if (exportIds.contains(store.jsonData.data[i].caPk)){
alert(store.jsonData.data[i].caPk);
alert(exportIds.contains(store.jsonData.data[i].caPk));
/**将json数据转换为Record*/
var obj = store.jsonData.data[i];
var Record = store.recordType;
var r = new Record(obj);

records.push(r);
}
}
alert("已选中的条数:"+records.length);//???????显示条数是2
selModel.selectRecords(records, true);// 以后每次load数据时,都会默认选中
alert(selModel.getCount());//?????????????为何是0??
alert("===");
}
},
reader: store
});






我在第一页选择了两条记录,翻到第二页,然后返回第一页,这两条记录应该显示被选中状态啊,
可是selModel中的被选中的是0条,这是为什么呢??records是放进去了2条啊,并且数据完全正确的。

我想要之前被选中的记录,保存被选中状态。。。
hookee 2011-12-05
  • 打赏
  • 举报
回复
var obj = {xx:xxx,xx:xxx}; //按照record定义顺序的json对象 
var Record = store.recordType;
var r = new Record(obj); //转成Record
store.insert(0, r); //插入store
幸福小猪的MM 2011-12-05
  • 打赏
  • 举报
回复
count
"157933"

data
[Object { caSex="男", caName="34234", caVisitId=1, 更多...}, Object { caSex="男", caName="test", caVisitId=1, 更多...}, Object { caDeptCode="消化科", caSex="男", caInpNo="1", 更多...}, 12 更多...]

0
Object { caSex="男", caName="34234", caVisitId=1, 更多...}

1
Object { caSex="男", caName="test", caVisitId=1, 更多...}

2
Object { caDeptCode="消化科", caSex="男", caInpNo="1", 更多...}

3
Object { caDeptCode="肿瘤内科一病区", caSex="男", caInpNo="767108", 更多...}

4
Object { caDeptCode="介入放射科一病区", caSex="男", caInpNo="734807", 更多...}

5
Object { caDeptCode="特需住院部三科", caSex="女", caInpNo="618953", 更多...}

6
Object { caDeptCode="心血管内科一病区", caSex="男", caInpNo="392921", 更多...}

7
Object { caDeptCode="介入放射科一病区", caSex="男", caInpNo="731178", 更多...}

8
Object { caDeptCode="小儿内科二病区", caSex="男", caInpNo="750350", 更多...}

9
Object { caDeptCode="消化内科三病区", caSex="女", caInpNo="750298", 更多...}

10
Object { caDeptCode="肿瘤内科二病区", caSex="女", caInpNo="750945", 更多...}

11
Object { caDeptCode="肿瘤内科一病区", caSex="男", caInpNo="740010", 更多...}

12
Object { caDeptCode="呼吸科康复病区", caSex="男", caInpNo="756021", 更多...}

13
Object { caDeptCode="肝胆外科四病区", caSex="男", caInpNo="671650", 更多...}

14
Object { caDeptCode="特需住院部三科", caSex="男", caInpNo="677007", 更多...}

success
true


这是后台传来的json数据。

现在我要将json数据中的data数组中的每条都转换成Grid中的record形式,

如何转换????
幸福小猪的MM 2011-12-05
  • 打赏
  • 举报
回复
怎么没有人回答
Re: 《 Linux磁盘与文件系统管理命令 》   ---------------------------------------内容提要: 01/16)命令fdisk           :磁盘分区工具02/16)命令partprobe  :更新内核的硬盘分区表信息(即分区即刻生效)03/16)命令 tune2fs     :调整 ext2/ext3/ext4 文件系统参数04/16)命令 parted       :磁盘分区工具(大小通吃)05/16)命令 mkfs          :创建Linux文件系统06/16)命令 dumpe2fs :导出ext2/ext3/ext4文件系统信息07/16)命令 resize2fs   :调整ext2/ext3/ext4文件系统大小08/16)命令 fsck           :检查并修复Linux文件系统09/16)命令 dd             :转换或复制文件10/16)命令 mount       :挂载文件系统11/16)命令 umount     :卸载文件系统12/16)命令 df              :报告文件系统磁盘空间的使用情况13/16)命令 mkswap    :创建交换分区14/16)命令 swapon     :激活交换分区15/16)命令 swapoff     :关闭交换分区16/16)命令 sync           :刷新文件系统缓冲区17/17)附录                   :NFS 网络文件服务器到安装;客户端的挂载 -t nfs;及新分区的权限测试  本人在教学和实战过程发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功! 本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学就不再赘述! 《参透 VMware 桌面级虚拟化》 《在虚拟机安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》 

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧