var grid; Ext.onReady(function() { // grid中的复选框 var sm = new Ext.grid.CheckboxSelectionModel(); // 数据存储器 var ds = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : "../student.action?method=page", method : "post" }), reader : new Ext.data.JsonReader({ // 读取json数据 root : "newsList", totalProperty : 'totalProperty' // 总记录数 }, [{ name : "id" }, { name : "name" }, { name : "sex" }, { name : "birthday" }, { name : "by1" }]) }); function toChin(val){ if(val=="1"){ return "男"; }else{ return "女"; } } // 创建列 var cm = new Ext.grid.ColumnModel([ sm, // 复选框 { header : "编号", dataIndex : "id", sortable : true }, { header : "姓名", dataIndex : "name", width : 100 }, { header : "性别", dataIndex : "sex", width : 110, renderer : toChin }, { header : "出生日期", dataIndex : "birthday", width : 150 }, { header : "民族", dataIndex : "by1", width : 110 }]); cm.defaultSortable = true;// 默认可排序 // grid中的工具条 var toolbar = new Ext.Toolbar([{ text : '添加', icon : 'icons/add.gif', handler : function() { insertform.form.reset(); //添加前先重置表单 window_add.show(); } }, { text : '修改', icon : 'icons/edit.gif', handler : function() { loadUpdateForm(); } }, { text : '删除', icon : 'icons/delete.gif', handler : function() { // 获取选中的对象 var list = grid.getSelectionModel().getSelections(); var str = ''; if (list.length > 0) { for (var i = 0; i < list.length; i++) { str = str + list[i].get('id') + ','; } } Ext.Msg.alert("提示", "删除" + str); var idList = []; for (var i = 0; i < list.length; i++) { idList.push(list[i].get('id')); } for (var i = 0; i < idList.length; i++) { var index = ds.find('id', idList[i]); if (index != -1) { var rec = ds.getAt(index); ds.remove(rec); // 移除 } } } }, { text : '重新加载', icon : 'icons/plugin.gif', handler : function() { ds.reload(); } }]); // 创建Grid grid = new Ext.grid.GridPanel({ el : "grid", ds : ds, title : "代码列表", width : 600, height : Ext.get("content").getHeight() / 2 + 20, cm : cm, loadMask : { msg : '正在加载数据,请稍侯……' }, sm : sm, tbar : toolbar, // 下边 bbar : new Ext.PagingToolbar({ pageSize : 10, store : ds, displayInfo : true, displayMsg : ' 显示第 {0} 条到 {1} 条记录,一共 {2} 条', emptyMsg : ' 没有记录' }) }); grid.render(); // 组件渲染之后触发 ds.load({params : {start : 0,limit : 10}}); // 加载数据 // 双击事件 grid.addListener("rowdblclick", function(grid, rowIndex, columnIndex, e) { var dataObj = grid.getStore().getAt(rowIndex); // 说去选中的行的数据对象 var id = dataObj.get("id"); var content = dataObj.get("name"); Ext.Msg.alert("提示", id + content); }); // 单击事件 /* * grid.addListener("click",function(){ Ext.Msg.alert("提示","单击事件"); }); */ /* * 如果要动态加载grid数据则,在方法内加入 ds:数据存储器,propertyId为要传的参数 * ds.load({params:{start:0,limit:10,propertyId:propertyId}}); * */ });
/** * 分页读取Grid内容 * * @param request * @param response * @return */ @RequestMapping(params = "method=page") public ModelAndView page(HttpServletRequest request, HttpServletResponse response) { int start; try { start = Integer.parseInt(request.getParameter("start")); } catch (NumberFormatException e1) { start = 0; } int limit; try { limit = Integer.parseInt(request.getParameter("limit")); } catch (NumberFormatException e1) { limit = 10; } Student nr = new Student(); List<Student> list = studentService.findStudentByPage(nr, start, limit); int totalProperty = studentService.findByCont(); JSONArray jsonArray = new JSONArray(); Iterator ite = list.iterator(); while (ite.hasNext()) { Student s = (Student) ite.next(); Map map = new HashMap(); map.put("id", s.getId()); map.put("name", s.getName()); map.put("sex", s.getSex()); map.put("birthday", s.getBirthday()); map.put("by1", s.getBy1()); jsonArray.add(map); } String jsonStr = jsonArray.toString(); String jsonString = "{start:" + start + ",limit:" + limit + ",totalProperty:" + totalProperty + ",newsList:" + jsonStr + "}"; response.setContentType("text/html;charset=utf-8"); try { response.getWriter().write(jsonString); } catch (IOException e) { e.printStackTrace(); } return null; }
// 定义Grid中的行对象 var Student = Ext.data.Record.create([{ name : 'id', mapping : 'id', type : 'int' }, { name : 'name', mapping : 'name', type : 'string' }, { name : 'sex', mapping : 'sex', type : 'string' }, { name : 'birthday', mapping : 'birthday', type : 'string' }, { name : 'by1', mapping : 'by1', type : 'string' }]); //读取下拉列表内容 var ds = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : '../student.action?method=selectTree' }), reader : new Ext.data.JsonReader({}, ['code', 'content']) }); var insertform = new Ext.FormPanel({ frame : true, labelWidth : 70, bodyStyle : 'padding:5px', border : false, labelAlign : 'right', fileUpload : true, // 上传文件(必填) items : [{ layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', baseCls : 'x-plain', border : false, // defaultType : 'textfield', defaults : { anchor : '80%' }, items : [{ fieldLabel : '身份证号', xtype : 'textfield', name : 'idCard', maxLength : 50 }, { fieldLabel : '姓名', xtype : 'textfield', name : 'name' }, { fieldLabel : '电子邮件', xtype : 'textfield', name : 'email', vtype : 'email' }, { xtype : 'panel', layout : 'table', fieldLabel : '性别', defaultType : 'radio', isFormField : true, items : [{ name : 'sex', boxLabel : '<span style="color:black;font-size:12px;">男 </span>', inputValue : '1', //值 checked : true //默认选中 }, { name : 'sex', boxLabel : '<span style="color:black;font-size:12px;">女</span>', inputValue : '2' }] }] }, { columnWidth : .5, layout : 'form', border : false, defaultType : 'textfield', defaults : { anchor : '80%' }, items : [{ store : ds, //下拉列表的数据 fieldLabel : '民族', name : 'by1', xtype : 'textfield', xtype : 'combo', valueField : 'code', //值的name属性 mode : 'remote', //远程数据 displayField : "content", //显示内容的name属性 forceSelection : true, blankText : '请选择所属类型', emptyText : '选择所属类型', editable : true, //可以编辑 triggerAction : 'all', allowBlank : false, hiddenName : "by1", //作为隐藏表单传入form的值 autoShow : true, selectOnFocus : true }, { fieldLabel : '出生日期', name : 'birthday', xtype : "datefield", format : "Y-m-d" }, { fieldLabel : '联系地址', name : 'address', xtype : 'textfield' }, { fieldLabel : '封面图片', name : 'uploadphoto', inputType : 'file' }] }] }, { xtype : 'checkboxgroup', fieldLabel : '兴趣爱好', name : 'xqah', columns : 4, items : [{ boxLabel : 'Item 1', name : 'xqah', inputValue : '1' }, { boxLabel : 'Item 2', name : 'xqah', checked : true, //默认选中 inputValue : '2' }, { boxLabel : 'Item 3', name : 'xqah', inputValue : '3' }, { boxLabel : 'Item 4', name : 'xqah', inputValue : '4' }, { boxLabel : 'Item 5', name : 'xqah', inputValue : '5' }, { boxLabel : 'Item 6', name : 'xqah', inputValue : '6' }, { boxLabel : 'Item 7', name : 'xqah', inputValue : '7' }] }, { xtype : 'tabpanel', plain : true, bodyBorder : false, activeTab : 0, height : 200, defaults : { bodyStyle : 'padding:2px' }, items : [{ title : '备注', layout : 'fit', items : { xtype : 'textarea', name : 'remark', maxLength : 500 } }, { title : '编辑推荐', layout : 'fit', items : { xtype : 'textarea', name : 'by2', maxLength : 500 } }, { title : '作者简介', layout : 'fit', items : { xtype : 'textarea', name : 'by3', maxLength : 500 } }] }], buttonAlign : "center", buttons : [{ text : "保存", handler : function() { submitform(); } }, { text : "关闭", handler : function() { window_add.hide(); } }] }); // 提交表单 function submitform() { if (insertform.getForm().isValid()) { // 如果验证通过 insertform.getForm().submit({ url : "../zdbnr.action?method=insert", waitMsg : '正在保存数据...', success : onAddSuccess, failure : onFailure }); } } var onFailure = function(form, action) { if (action.failureType == "connect") { Ext.Msg.alert('服务器异常', '服务器异常,请与管理员联系!'); } else { Ext.Msg.alert('错误', '您输入的用户名和密码错误!'); } } // 触发事件,如:添加成功后 var onAddSuccess = function(form, action) { var store = grid.getStore(); var student = new Student({ id : action.result.stuid, name : form.findField('name').getValue(), sex : form.findField('sex').getValue(), birthday : form.findField('birthday').getValue(), by1 : form.findField('by1').getValue() }); store.insert(0, [student]); if (store.data.length > 10) { store.remove(store.getAt(store.data.length - 1)); } Ext.MessageBox.alert("提示", "插入成功!"); window_add.hide(); } var window_add = new Ext.Window({ title : '添加', width : 600, resizable : false, autoHeight : true, // 自动适应高度 modal : true, closeAction : 'hide', listeners : { 'hide' : function() { } }, items : [insertform] });
@RequestMapping(params = "method=selectTree") public ModelAndView selectTree(HttpServletRequest request, HttpServletResponse reponse) throws Exception { reponse.setContentType("text"); reponse.setCharacterEncoding("UTF-8"); SysDataParamContent content = new SysDataParamContent(); content.setDataParamId(10024); List<SysDataParamContent> nrlist = dataZxZdbnrService .findByComb(content); StringBuffer sb = new StringBuffer(); sb.append("["); for (int i = 0; i < nrlist.size(); i++) { SysDataParamContent nr = nrlist.get(i); sb.append("{\"content\" :\"" + nr.getContent() + "\" ,\"code\" :\"" + nr.getCode() + "\"},"); } sb.append("]"); reponse.getWriter().write(sb.toString()); return null; } @RequestMapping(params = "method=insert") public ModelAndView insert(Student stu,HttpServletRequest request, HttpServletResponse reponse) throws Exception { int count = dataZxZdbnrService.insertStudent(stu); reponse.setContentType("text/html"); String result = ""; if (count > 0) { count = studentService.findByLast(); uploadTemplate(request,count); result = "{stuid:"+count+",success:true}"; } reponse.getWriter().write(result); return null; }
var updateform = new Ext.FormPanel({ frame : true, labelWidth : 70, bodyStyle : 'padding:5px', border : false, labelAlign : 'right', items : [{ layout : 'column', border : false, items : [{ columnWidth : .5, layout : 'form', baseCls : 'x-plain', border : false, defaults : { anchor : '80%' }, items : [{ name : "id", fieldLabel : "编号", xtype : "hidden" },{ fieldLabel : '身份证号', xtype : 'textfield', name : 'idCard', maxLength : 50 }, { fieldLabel : '姓名', xtype : 'textfield', name : 'name' }, { fieldLabel : '电子邮件', xtype : 'textfield', name : 'email', vtype : 'email' }, { xtype : 'panel', layout : 'table', fieldLabel : '性别', defaultType : 'radio', isFormField : true, items : [{ name : 'sex', boxLabel : '<span style="color:black;font-size:12px;">男 </span>', inputValue : '1', // 值 checked : true // 默认选中 }, { name : 'sex', boxLabel : '<span style="color:black;font-size:12px;">女</span>', inputValue : '2' }] }] }, { columnWidth : .5, layout : 'form', border : false, defaultType : 'textfield', defaults : { anchor : '80%' }, items : [{ store : ds, // 下拉列表的数据 fieldLabel : '民族', name : 'by1', xtype : 'textfield', xtype : 'combo', valueField : 'code', // 值的name属性 mode : 'remote', // 远程数据 displayField : "content", // 显示内容的name属性 forceSelection : true, blankText : '请选择所属类型', emptyText : '选择所属类型', editable : true, // 可以编辑 triggerAction : 'all', allowBlank : false, hiddenName : "by1", // 作为隐藏表单传入form的值 autoShow : true, selectOnFocus : true }, { fieldLabel : '出生日期', name : 'birthday', xtype : "datefield", format : "Y-m-d" }, { fieldLabel : '联系地址', name : 'address', xtype : 'textfield' }, { fieldLabel : '封面图片', name : 'uploadphoto', inputType : 'file' }] }] }, { xtype : 'checkboxgroup', fieldLabel : '兴趣爱好', name : 'xqah', columns : 4, items : [{ boxLabel : 'Item 1', name : 'xqah', inputValue : '1' }, { boxLabel : 'Item 2', name : 'xqah', checked : true, // 默认选中 inputValue : '2' }, { boxLabel : 'Item 3', name : 'xqah', inputValue : '3' }, { boxLabel : 'Item 4', name : 'xqah', inputValue : '4' }, { boxLabel : 'Item 5', name : 'xqah', inputValue : '5' }, { boxLabel : 'Item 6', name : 'xqah', inputValue : '6' }, { boxLabel : 'Item 7', name : 'xqah', inputValue : '7' }] }, { xtype : 'tabpanel', plain : true, bodyBorder : false, activeTab : 0, height : 200, defaults : { bodyStyle : 'padding:2px' }, items : [{ title : '备注', layout : 'fit', items : { xtype : 'textarea', name : 'remark', maxLength : 500 } }, { title : '编辑推荐', layout : 'fit', items : { xtype : 'textarea', name : 'by2', maxLength : 500 } }, { title : '作者简介', layout : 'fit', items : { xtype : 'textarea', name : 'by3', maxLength : 500 } }] }], buttonAlign : "center", buttons : [{ text : "修改", handler : function() { submitUpdaeForm(); } }, { text : "关闭", handler : function() { window_edit.hide(); } }] }); // 提交表单 function submitUpdaeForm() { if (updateform.getForm().isValid()) { // 如果验证通过 updateform.getForm().submit({ url : "../student.action?method=update", waitMsg : '正在保存数据...', success : onAddSuccessUpdate, failure : onFailureUpdate }); } } var onFailureUpdate = function(form, action) { if (action.failureType == "connect") { Ext.Msg.alert('服务器异常', '服务器异常,请与管理员联系!'); } else { Ext.Msg.alert('错误', '您输入的用户名和密码错误!'); } } var onAddSuccessUpdate = function(form, action) { Ext.MessageBox.alert("提示", "修改成功!"); window_edit.hide(); } function editloadForm(id) { updateform.form.load({ waitMsg : '正在加载数据', waitTitle : '提示', url : '../student.action?method=findById', params : { id : id }, method : 'GET', success : function(form, action) { // 数据加载成功. }, failure : function(form, action) { Ext.Msg.alert('无法加载该数据'); } }); } function loadUpdateForm() { var stulist = grid.getSelectionModel().getSelections(); var idList = []; if (stulist.length == 0) { Ext.Msg.alert("提示", "请选择要修改的数据!"); } else if (stulist.length > 1) { Ext.Msg.alert("提示", "只能选择一条记录操作!"); } else { for (var i = 0; i < stulist.length; i++) { idList.push(stulist[i].get('id')); } updateform.form.reset(); updateform.isAdd = true; window_edit.setTitle("修改"); window_edit.show(); var id = idList[0]; editloadForm(id); } } var window_edit = new Ext.Window({ title : '修改', width : 600, resizable : false, autoHeight : true, // 自动适应高度 modal : true, closeAction : 'hide', listeners : { 'hide' : function() { } }, items : [updateform] });
@RequestMapping(params = "method=findById") public ModelAndView findById(int id, HttpServletResponse response) { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); StringBuffer sb = new StringBuffer(); Student stu = studentService.findById(id); sb.append("{"); sb.append("success : true,"); sb.append("data : {id :" + stu.getId() + ",idCard : \"" + stu.getIdCard() + "\",name:\"" + StringUtils.trimToEmpty(stu.getName()) + "\",email:\"" + StringUtils.trimToEmpty(stu.getEmail()) + "\",sex:\"" + stu.getSex() + "\",by1 : \"" + StringUtils.trimToEmpty(stu.getBy1()) + "\",birthday:\"" + StringUtils.trimToEmpty(stu.getBirthday()) + "\",address:\"" + StringUtils.trimToEmpty(stu.getAddress()) + "\",xqah:\"" + StringUtils.trimToEmpty(stu.getXqah()) + "\",remark:\"" + StringUtils.trimToEmpty(stu.getRemark()) + "\",by2:\"" + StringUtils.trimToEmpty(stu.getBy2()) + "\",by3:\"" +StringUtils.trimToEmpty( stu.getBy3()) + "\"}"); sb.append("}"); try { response.getWriter().write(sb.toString()); } catch (Exception e) { } return null; } @RequestMapping(params = "method=update") public ModelAndView update(Student stu,HttpServletResponse response) { String result = ""; int count = studentService.update(stu); if(count>0){ result = "{message:'修改成功!',success:true}"; } try { response.getWriter().write(result); } catch (Exception e) { } return null; }