东亚环球国际业主论坛:JSP+Ext实现CURD, 更简洁明了

来源:百度文库 编辑:偶看新闻 时间:2024/05/06 17:37:02
  1. /*  
  2.  * MemberManage.js  
  3.  * @author zuoming99  
  4.  */  
  5.   
  6. Ext.onReady(function(){   
  7.     Ext.QuickTips.init();   
  8.   
  9.     var fm = Ext.form;   
  10.     var sm = new Ext.grid.CheckboxSelectionModel({handleMouseDown: Ext.emptyFn});   
  11.   
  12.     var cm = new Ext.grid.ColumnModel([   
  13.         sm,{   
  14.             header:'ID',   
  15.             dataIndex:'id',   
  16.             width:40   
  17.         },{   
  18.             header: "姓名",   
  19.             dataIndex: 'name',   
  20.             editor: new fm.TextField({   
  21.                 allowBlank: false  
  22.             })   
  23.         },{   
  24.             header:'性别',   
  25.             dataIndex:'sex',   
  26.             width:60,   
  27.             align:'center',   
  28.             renderer:function(v){   
  29.                 return '+v+'.png"/>'+(v=='m'?'男':'女');   
  30.             },   
  31.             editor:new fm.ComboBox({   
  32.                 typeAhead: true,   
  33.                 triggerAction: 'all',   
  34.                 transform:'sexSelect',   
  35.                 lazyRender:true,   
  36.                 readOnly:true,   
  37.                 listClass: 'x-combo-list-small'  
  38.             })   
  39.         },{   
  40.             header:'年龄',   
  41.             dataIndex:'age',   
  42.             width:50,   
  43.             align:'right',   
  44.             renderer:function(v){   
  45.                 var code = ';   
  46.                 if(v<=25){   
  47.                     code += '#008000';   
  48.                 }else if(v>25 && v<=30){   
  49.                     code += '#CC6600';   
  50.                 }else if(v>30){   
  51.                     code += '#804000';   
  52.                 }   
  53.                 return code+';">'+v+'';   
  54.             },   
  55.             editor: new fm.NumberField({   
  56.                 allowBlank:false,   
  57.                 allowNegative: false,   
  58.                 allowDecimals: false,   
  59.                 maxValue:60,   
  60.                 minValue:18   
  61.             })   
  62.         },{   
  63.             header: "生日",   
  64.             dataIndex: 'birth',   
  65.             renderer: function(v){   
  66.                 return v ? v.dateFormat('Y年m月d日') : '';   
  67.             },   
  68.             editor: new fm.DateField({   
  69.                 format: 'Y-m-d',   
  70.                 minValue: '1800-01-01',   
  71.                 readOnly:true,   
  72.                 disabledDays: [0, 6],   
  73.                 disabledDaysText: '请不要选择周末'  
  74.             })   
  75.         }   
  76.     ]);   
  77.   
  78.     cm.defaultSortable = true;   
  79.   
  80.     var Member = Ext.data.Record.create([   
  81.            {name: 'id', type: 'int'},   
  82.            {name: 'name', type: 'string'},   
  83.            {name: 'sex'},   
  84.            {name: 'age',type:'int'},   
  85.            {name: 'birth', type: 'date', dateFormat: 'Y-m-d'}   
  86.       ]);   
  87.   
  88.     var store = new Ext.data.JsonStore({   
  89.         url:'./member_manage.jsp',   
  90.         baseParams:{command:'query'},   
  91.         totalProperty:'count',   
  92.         root:'members',   
  93.         fields:Member,   
  94.         pruneModifiedRecords:true,   
  95.         sortInfo: {field: "id", direction: "ASC"//设置默认排序规则, EditorGridPanel在新增加一行却未保存时如果点击header排序会出现'行142字符6983,modified为空或不是对象'   
  96.     });   
  97.   
  98.     //表单窗体   
  99.     var memberAddWindow;   
  100.   
  101.     var grid = new Ext.grid.EditorGridPanel({   
  102.         store: store,   
  103.         cm: cm,   
  104.         renderTo: 'member_grid',   
  105.         resizeable:true,   
  106.         width:640,   
  107.         height:480,   
  108.         title:'员工管理',   
  109.         frame:true,   
  110.         clicksToEdit:1,   
  111.         sm:sm,   
  112.         iconCls:'icon-grid',   
  113.         loadMask: true,   
  114.         stripeRows:true,   
  115.         tbar:[   
  116.         {// 添加按钮   
  117.             text:'添加',   
  118.             iconCls:'user_add',   
  119.             handler:function(){   
  120.                 var m = new Member({   
  121.                     name:'新员工',   
  122.                     sex:'m',   
  123.                     age:'20',   
  124.                     birth:new Date().clearTime()   
  125.                 });   
  126.                 grid.stopEditing();   
  127.                 store.insert(0, m);   
  128.                 grid.startEditing(0, 2);   
  129.                 store.getAt(0).dirty=true// 设置该行记录为脏数据(默认为非脏数据),否则在保存时将无法判断该行是否已修改   
  130.             }   
  131.         },'-',{   
  132.             id:'newWindowButton',   
  133.             text:'新面板中添加',   
  134.             iconCls:'user_add',   
  135.             handler:function(){   
  136.                 showMemerAddWindow(); //显示表单所在窗体   
  137.             }   
  138.         },'-',{//删除按钮   
  139.             id:'btnDelete',   
  140.             text:'删除',   
  141.             iconCls:'user_delete',   
  142.             handler:function(){   
  143.                 var sm = grid.getSelectionModel();   
  144.                 var selected = sm.getSelections();   
  145.                 var ids = [];   
  146.                 for(var i=0;i
  147.                     var member = selected[i].data;   
  148.                     if(member.id) {   
  149.                         ids.push(member.id); //如果有ID属性,则表示该行数据是被修改过的,所以需要访问数据库进行删除   
  150.                     }else{   
  151.                         //如果没有ID属性,则表示该行数据是新添加的未保存的数据,所以不需要访问数据库进行删除该行   
  152.                         store.remove(store.getAt(i));   
  153.                     }   
  154.                 }   
  155.                 if(ids.join('')==''return;   
  156.                    
  157.                 Ext.Msg.confirm('信息','确定要删除所选项吗?',function(btn){   
  158.                     if(btn=='yes'){   
  159.                         //发送删除请求   
  160.                         Ext.lib.Ajax.request(   
  161.                             'POST',   
  162.                             './member_manage.jsp',{   
  163.                                 success:function(request){   
  164.                                     var message = request.responseText;   
  165.                                     Ext.Msg.alert('信息',message);   
  166.                                     store.reload();   
  167.                                 },failure:function(){   
  168.                                     Ext.Msg.alert('错误','删除时出现未知错误.');   
  169.                                 }   
  170.                             },   
  171.                             'command=delete&ids='+ids   
  172.                         );   
  173.                     }   
  174.                 });   
  175.             }   
  176.         },'-',{//保存按钮   
  177.             text:'保存',   
  178.             iconCls:'save',   
  179.             handler:function(){   
  180.                 var json = [];   
  181.                 for(i=0,cnt=store.getCount();i
  182.                     var record = store.getAt(i);   
  183.                     if(record.dirty) // 得到所有修改过的数据   
  184.                         json.push(record.data);   
  185.                 }   
  186.                 if(json.length==0){   
  187.                     Ext.Msg.alert('信息','没有对数据进行任何更改');   
  188.                     return;   
  189.                 }   
  190.                    
  191.                 //发送保存请求   
  192.                 Ext.lib.Ajax.request(   
  193.                     'POST',   
  194.                     './member_manage.jsp',{   
  195.                         success:function(request){   
  196.                             var message = request.responseText;   
  197.                             Ext.Msg.alert('信息',message);   
  198.                             store.reload();   
  199.                             //grid.getView().refresh();   
  200.                         },   
  201.                         failure:function(){   
  202.                             Ext.Msg.alert("错误""与后台联系的时候出现了问题");   
  203.                         }   
  204.                     },   
  205.                     'command=save&members='+encodeURIComponent(Ext.encode(json))   
  206.                 );   
  207.             }   
  208.         },'-'],   
  209.         bbar: new Ext.PagingToolbar({   
  210.             pageSize: 10,   
  211.             store: store,   
  212.             displayInfo: true,   
  213.             displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',   
  214.             emptyMsg: "没有记录"  
  215.         })   
  216.   
  217.     });   
  218.     store.load({params:{start:0,limit:10}});   
  219.        
  220.        
  221.        
  222.     /**  
  223.      * 以下是表单 __________________________________________________  
  224.      * */  
  225.   
  226.     //姓名字段   
  227.     var nameField = new Ext.form.TextField({   
  228.         fieldLabel:'姓名',   
  229.         name:'memberName',   
  230.         allowBlank:false,   
  231.         anchor:'90%'  
  232.     });   
  233.     //性别字段   
  234.     var sexField = new Ext.form.ComboBox({   
  235.         fieldLabel:'性别',   
  236.         name:'sex',   
  237.         allowBlank:false,   
  238.         mode: 'local',   
  239.         readOnly:true,   
  240.         triggerAction:'all',   
  241.         anchor:'90%',   
  242.         store:new Ext.data.SimpleStore({   
  243.             fields:['value','text'],   
  244.             data:[   
  245.                 ['m','男'],   
  246.                 ['f','女']   
  247.             ]   
  248.         }),   
  249.         valueField: 'value',   
  250.         displayField: 'text'  
  251.     });   
  252.     //年龄字段   
  253.     var ageField = new Ext.form.NumberField({   
  254.         fieldLabel:'年龄',   
  255.         name:'age',   
  256.         allowBlank:false,   
  257.         allowNegative:false,   
  258.         allowDesimals:false,   
  259.         maxValue:80,   
  260.         minValue:18,   
  261.         anchor:'90%'  
  262.     });   
  263.     //生日字段   
  264.     var birthField = new Ext.form.DateField({   
  265.         fieldLabel:'出生日期',   
  266.         name:'birth',   
  267.         format:'Y-m-d',   
  268.         readOnly:true,   
  269.         anchor:'90%'  
  270.     });   
  271.     //表单对象   
  272.     var memberForm = new Ext.FormPanel({   
  273.         labelAlign: 'top',   
  274.         frame:true,   
  275.         title: '添加新员工信息',   
  276.         width: 300,   
  277.         url:'./member_manage.jsp?command=insert',   
  278.            
  279.         items: [{   
  280.             layout:'column',// 该FormPanel的layout布局模式为列模式(column),包含2列   
  281.             items:[   
  282.             {//第一列   
  283.                 columnWidth:0.5,   
  284.                 layout: 'form',   
  285.                 items: [nameField,sexField]   
  286.             },{//第二列   
  287.                 columnWidth:0.5,   
  288.                 layout: 'form',   
  289.                 items: [ageField,birthField]   
  290.             }]   
  291.         }],   
  292.         buttons:[{   
  293.             text:'提交',   
  294.             handler:function(){   
  295.                 if(memberForm.getForm().isValid())   
  296.                     memberForm.getForm().submit({   
  297.                         waitMsg:'保存中,请稍后...',   
  298.                         success:function(){   
  299.                             memberForm.getForm().reset();   
  300.                             memberAddWindow.hide();   
  301.                             store.reload();   
  302.                         }   
  303.                     });   
  304.             }   
  305.         },{   
  306.             text:'取消',   
  307.             handler:function(){   
  308.                 memberForm.getForm().reset();   
  309.                 memberAddWindow.hide();   
  310.             }   
  311.         }]   
  312.     });   
  313.        
  314.     //窗体对象   
  315.     function showMemerAddWindow(){   
  316.         if(!memberAddWindow){   
  317.             memberAddWindow = new Ext.Window({   
  318.                 el:'window_win',   
  319.                 layout:'fit',   
  320.                 width:300,   
  321.                 height:200,   
  322.                 closable:true,   
  323.                 closeAction:'hide',   
  324.                 plain:true,   
  325.                 items: [memberForm]   
  326.             });   
  327.         }   
  328.         memberAddWindow.show(Ext.get('newWindowButton'));   
  329.     }   
  330. });  
2006德国世界杯资料(简洁明了) 有谁知道关于古代丝绸之路的简洁明了的知识 杜绝复杂回答问题!简洁明了易懂才是关键! 请用简洁明了的语言回答下列问题! 求有关菩提树的资料(要求简洁明了) 用JSP实现 Helloworld 怎样用jsp实现trackback Jsp分页实现 玉是怎么鉴赏?(简洁明了的讲一下,普通人就可看明白的) 解释 什么叫成功?看似简单 要求简洁明了哦 谁会? 进来看看吧!10分啊!不少的啦!如果全部答对且简洁明了,再加! 谁能用一句简单的话来概括这个社会!简洁!明了! 欧洲的茜茜公主生平简介?要简洁明了的 简洁明了地,藏传佛教和汉传有啥区别呀,谢了 征集好的校训(有深度,有内涵,并且说明寓意,字数不要太多,简洁明了) 征集好的校训(有深度,有内涵,并且说明寓意,字数不要太多,简洁明了) 区分索爱W550行水,翻新.简洁明了准确的办法? 请用简洁明了、重点突出的语言解释IP网、ISDN网、E1网、卫星网络 哪位英语高手帮我简洁明了的讲一下过去将来的用法 哪位英语高手帮我简洁明了的讲一下过去进行时的用法 帮忙想一句工业用负离子加湿器的宣传语或者广告语,简洁明了有创意 请问高手什么是火马年?下一个火马年是什么时候?怎么推算的(欢迎简洁明了) 入何提高下载速度 长篇大论不要来 要简洁明了的 怎么先进入DOS系统~然后做gohst备份呢~简洁明了点