// 数据源代理  
    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  
    });  

解决方案 »

  1.   

    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形式,如何转换????
      

  2.   

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

  3.   


    正解,再请教一个问题://翻页时清空上页的全选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条啊,并且数据完全正确的。我想要之前被选中的记录,保存被选中状态