首先定义一个EditorGridPanel,
- var maintainceOrderGrid = new Ext.grid.EditorGridPanel( {// 创建Grid表格组件
- applyTo : 'maintainorderinfo-grid-div',// 设置表格现实位置
- frame : true,// 渲染表格面板
- tbar : toolbar,// 设置顶端工具栏
- stripeRows : true,// 显示斑马线
- autoScroll : true,// 当数据查过表格宽度时,显示滚动条
- store : maintainceProjectStore,// 设置表格对应的数据集
- viewConfig : {// 自动充满表格
- autoFill : true
- },
- sm : sm,// 设置表格复选框
- cm : cm,// 设置表格的列
- bbar : new Ext.PagingToolbar( {
- pageSize : 25,
- store : maintainceProjectStore,
- displayInfo : true,
- displayMsg : '显示第{0}条到{1}条记录,一共{2}条记录',
- emptyMsg : '没有记录'
- })
- });
接着定义grid中用到的sm和cm,
- var sm = new Ext.grid.CheckboxSelectionModel();// 创建复选择模式对象
- var cm = new Ext.grid.ColumnModel( [// 创建表格列模型
- new Ext.grid.RowNumberer(), sm, {
- header : "维修价格",
- width : 60,
- dataIndex : 'price',
- sortable : true,
- editor : new Ext.form.NumberField( {
- editable : true,
- allowNegative : false,
- allowBlank : false,
- decimalPrecision : 2,
- minValue : 0
- // ,
- // maxValue : 1
- })
- } ]);
再定义一个保存维修价格的toolbar,用于调用保存维修价格的方法。
- var toolbar = new Ext.Toolbar( [ {
- text : '保存维修价格',
- iconCls : 'add',
- handler : setMaintaincePrice
- } ]);
保存维修价格的方法如下:
- function setMaintaincePrice() {//设置维修价格
- var mr = maintainceProjectStore.getModifiedRecords();// 获取所有更新过的记录
- var recordCount = maintainceProjectStore.getCount();// 获取数据集中记录的数量
- if (mr.length == 0) {
- Ext.MessageBox.alert('提示', '没有修改数据!');
- }
- else
- {
- var msgTip = Ext.MessageBox.show( {
- title : '提示',
- width : 250,
- msg : '正在提交更改请稍后......'
- });
- var recordModStr = "[";// 以josn方式保存数据
- for ( var i = 0; i < mr.length; i++) {
- recordModStr += "{maintainceProjectId:"
- + mr[i].data["maintainceProjectId"] + ",price:"
- + mr[i].data["price"] + "}";
- if (i < mr.length - 1)
- recordModStr += ",";
- }
- recordModStr += "]";
- var requestConfig = {
- //url : 'material.do?method=modifyMaterialQuantity×tamp=' + new Date(),
- url : 'maintianceproject.do?method=setMaintaincePrice×tamp=' + new Date(),
- jsonData : recordModStr,
- params : {
- mlist : recordModStr
- },
- callback : function(options, success, reponse) {
- msgTip.hide();
- if (success) {
- Ext.Msg.alert('提示', '保存成功');
- maintainceProjectStore.commitChanges();
- } else {
- Ext.Msg.alert('提示', '保存失败');
- }
- }
- }
- Ext.Ajax.request(requestConfig);
- }
这里使用了
- Ext.Ajax.request(requestConfig);
Ajax动态向后台发送请求的方法。这也是ExtJs前后台传递消息的有效方法之一。
下面列出后台读取josn的方法:
- private ModelAndView setMaintaincePrice(HttpServletRequest request,
- HttpServletResponse response) throws IOException {
- String jsonstr = request.getParameter("mlist");
- // test
- System.out.println(jsonstr);
- jsonstr = URLDecoder.decode(jsonstr, "utf-8");
- JSONArray array = JSONArray.fromObject(jsonstr);
- MaintianceprojectForm[] obj = new MaintianceprojectForm[array.size()];
- boolean b = false;
- for (int i = 0; i < array.size(); i++) {
- JSONObject jsonObject = array.getJSONObject(i);
- obj[i] = (MaintianceprojectForm) JSONObject.toBean(jsonObject,
- MaintianceprojectForm.class);
- // test
- System.out.println(obj[i].getMaintainceProjectId() + "*****"
- + obj[i].getPrice());
- Maintianceproject record = new Maintianceproject();
- record.setPrice(obj[i].getPrice());
- b = this.getMaintianceprojectService().updateMaintaincePrice(
- obj[i].getMaintainceProjectId(), record);
- if (b == false)
- break;
- }
- if (b) {
- response.getWriter().write("{success:true}");
- } else {
- response.getWriter().write("{success:false}");
- }
- return null;
- }
本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2010/12/29/2297054.html,如需转载请自行联系原作者