分享

Ext.grid.EditorGridPanel的使用、修改记录的获取及提交方法

 hehffyy 2011-05-26

  1. <HTML>  
  2.  <HEAD>  
  3.   <TITLE>可编辑表格面板EditorGridPanel</TITLE>  
  4.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  5.   <link rel="stylesheet" type="text/css" href="extjs2.0/resources/css/ext-all.css" mce_href="extjs2.0/resources/css/ext-all.css" />  
  6.   <mce:script type="text/javascript" src="extjs2.0/adapter/ext/ext-base.js" mce_src="extjs2.0/adapter/ext/ext-base.js"></mce:script>  
  7.   <mce:script type="text/javascript" src="extjs2.0/ext-all.js" mce_src="extjs2.0/ext-all.js"></mce:script>  
  8.   <mce:script type="text/javascript" src="extjs2.0/source/locale/ext-lang-zh_CN.js" mce_src="extjs2.0/source/locale/ext-lang-zh_CN.js"></mce:script>  
  9.   <mce:script type="text/javascript"><!--  
  10.  Ext.onReady(function(){  
  11.   Ext.BLANK_IMAGE_URL = '../../extjs2.0/resources/images/default/s.gif';  
  12.   Ext.QuickTips.init();  
  13.   Ext.form.Field.prototype.msgTarget = 'qtip';  
  14.   //创建表格数据  
  15.   var data = [  
  16.    [1,'张三','男',new Date(1979,09,13),29,'zhang@abc.com'],  
  17.    [2,'李四','女',new Date(1978,10,01),30,'li@abc.com'],  
  18.    [3,'王五','男',new Date(1981,01,01),27,'wang@abc.com']  
  19.   ];  
  20.   //创建记录类型Person,mapping值为字段值对应数组中数据的索引位置  
  21.   var Person = Ext.data.Record.create([  
  22.    {name: 'personId',mapping: 0},  
  23.    {name: 'personName',mapping: 1},  
  24.    {name: 'personSex',mapping: 2},  
  25.    {name: 'personBirthday',mapping: 3},  
  26.    {name: 'personAge',mapping: 4},  
  27.    {name: 'personEmail',mapping: 5}  
  28.   ]);  
  29.   var dataStore=new Ext.data.Store({//配置数据集  
  30.     reader: new Ext.data.ArrayReader({id:0},Person),  
  31.     data: data  
  32.    });  
  33.   //创建Grid表格组件  
  34.   var grid = new Ext.grid.EditorGridPanel({  
  35.    title : 'Ext.grid.EditorGridPanel',  
  36.    applyTo : 'grid-div',  
  37.    width:430,  
  38.    height:280,  
  39.    frame:true,  
  40.    clicksToEdit:2,  
  41.    store: dataStore,  
  42.    //方式一:对所有修改结果集中式提交  
  43.    tbar:[{  
  44.     text:'提交修改',  
  45.     handler:function(){  
  46.      var mr=dataStore.getModifiedRecords();//获取所有更新过的记录  
  47.      var recordCount=dataStore.getCount();//获取数据集中记录的数量  
  48.      if(mr.length==0){  // 确认修改记录数量  
  49.        alert("没有修改数据!");  
  50.        return false;  
  51.      }  
  52.        
  53.      var recordModStr="[";//这里以josn方式保存  
  54.      for(var i=0;i<mr.length;i++){  
  55.       alert("orginValue:"mr[i].modified["personEmail"]+",value:"+mr[i].data["personSex"]);//此处cell是否发生  
  56.                                              //更改可用mr[i].dirty来判断  
  57.       recordModStr+="{personName:"+mr[i].data["personName"]+",personSex:"+mr[i].data["personSex"]+",personBirthday:"  
  58.            +mr[i].data["personBirthday"]+",personAge:"+mr[i].data["personAge"]+",personEmail:"+mr[i].data["personEmail"]+"}";  
  59.        if(i<mr.length-1)  
  60.                 recordModStr+=",";  
  61.      }  
  62.      recordModStr+="]";  
  63.      alert(recordModStr);  
  64.      //向后台提交请求 Ext.Ajax.request(requestCofig);//将recordModStr传入  
  65.    }  
  66.    }],  
  67.    columns: [//配置表格列  
  68.     {header: "id", width: 40, dataIndex: 'personId'},  
  69.     {header: "姓名", width: 70, dataIndex: 'personName',  
  70.      editor:new Ext.form.TextField({  
  71.       allowBlank : false  
  72.      })  
  73.     },  
  74.     {header: "性别", width: 40, dataIndex: 'personSex',  
  75.      editor:new Ext.form.ComboBox({  
  76.       editable : false,  
  77.       displayField:'sex',  
  78.       mode: 'local',  
  79.       triggerAction: 'all',  
  80.       store:new Ext.data.SimpleStore({  
  81.        fields: ['sex'],  
  82.        data : [['男'],['女']]  
  83.       })  
  84.      })  
  85.     },  
  86.     {header: "生日", width: 100, dataIndex: 'personBirthday',  
  87.      editor:new Ext.form.DateField(),  
  88.      renderer:Ext.util.Format.dateRenderer('Y年m月d日')  
  89.     },  
  90.     {header: "年龄", width: 40, dataIndex: 'personAge',  
  91.      editor:new Ext.form.NumberField(),renderer:isEdit  
  92.     },  
  93.     {header: "电子邮件", width: 120, dataIndex: 'personEmail',  
  94.      editor:new Ext.form.TextField({  
  95.       vtype:'email'  
  96.      })  
  97.     }  
  98.    ]  
  99.   })  
  100.   //方式二:对修改结果实时提交,这里对年龄实时提交  
  101.   function isEdit(value,record){  
  102.     //向后台提交请求  
  103.    return value;  
  104.   }  
  105. function afterEdit(obj){    //每次更改后,触发一次该事件  
  106.           alert("orginalValue:"+obj.originalValue+",value:"+obj.value);  
  107.       }  
  108.      grid.on("afteredit", afterEdit, grid);  
  109.  });  
  110.     
  111. // --></mce:script>  
  112.  </HEAD>  
  113.  <BODY style="margin=10 10 10 10;" mce_style="margin=10 10 10 10;">  
  114.  <div id='grid-div'></div>  
  115.  </BODY>  
  116. </HTML>  
 

注:此例基本代码参考《ExtJS web应用程序开发指南》中代码17-7

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约