目的:写一个按钮事件,点击时弹出一个win窗体,里面镶嵌form表单,并且展示后台单个对象的属性

 先来后台:
public void find(){
String clientId = request.getParameter("clientId");
BusinessContract bc = businessContractService.getLastContract(clientId);
response.setContentType("text/html;charset=UTF-8");
JSONObject json = JSONObject.fromObject(bc);
ajaxWrite("{bc:["+json.toString()+"]}");
}
前台代码:
win 和form放在一起
text:'客户合同上传',
scope:this,
handler: function(item, event){
var record=this.getSelectionModel().getSelected();
if(!record){
Ext.MessageBox.alert('提示', '请选择客户信息!');
return;
}
var clientId=record.id;
var adr = '************'; //form表单提交路径
var findadr="*****************";//form表单数据来源
var company =record.data.bi_name;//来源于选中行的数据
var uploadForm=new Ext.form.FormPanel({//按照顺序,先创建一个form表单
width:600,
baseCls: 'x-plain',
frame:true,
layout: 'form',
fileUpload: true,//文件上传必须添加该属性,(PS:此处出现问题,添加该属性之后返回值里action.result为空,去掉则正常,暂时没解决)
autoHeight:true,
labelWidth:90,
defaults:{
anchor: '95%',
allowBlank: false
},
renderTo: Ext.getBody(),
reader: new Ext.data.JsonReader({//此处动态加载数据的属性获取
root: 'bc'  //取值对象
},
[    //对象里面的字段
              'contractType',
'companyAddress','companyName','companyPhone','taxNum','bankName',
'bankNum','financer',
{name:'taxpayerFile1',convert :function(v,record){  //这里是上传文件的路径,本来是服务器路径,这里就不予展示,直接提示是否上传过
if(v){
return '已经上传';
}else{
return '暂无文件';
};
}},
{name:'taxpayerFile2',convert :function(v,record){
if(v){
return '已经上传';
}else{
return '暂无文件';
};
}},{name:'docmentFile',convert:function(v,record){
                   if(v){      
                    return '已经上传';
                                }else{
return '暂无文件';
};}
                },
                        {name:'sdate',type:"date",mapping:'sdate.time',convert :function(v,record){  //日期字段,此处接受的字段格式:"edate":{"date":9,"day":5,"hours":0,"minutes":0,"month":5,"nanos":0,"seconds":0,"time":149693                                                                           // 7600000,"timezoneOffset":-480,"year":117}   所以只能对格式加以控制
return Ext.util.Format.date(new Date(v),'Y-m-d');
}},
{name:'edate',type:"date",mapping:'edate.time',convert :function(v,record){
return Ext.util.Format.date(new Date(v),'Y-m-d');
}},
'paymentDays'
,'amount','saler','content'
]),
items:[{
fieldLabel:'当前客户',
xtype : 'tbtext',
text:'<b>'+company+'</b>',
valueField :clientId,
name :'compnay'
},{
fieldLabel:'合同类型',
xtype:'attrCombo',
displayField:'name',
valueField :'name',
editable:false,
url:'/cs/customer/cct_find.ftl',
name:'contractType'
},{
name:'companyName',
xtype:'textfield',
allowBlank:false,
fieldLabel: '甲方全称*'
},{
name:'companyAddress',
xtype:'textfield',
fieldLabel: '甲方地址',
allowBlank:true,
},{
name:'companyPhone',
xtype:'textfield',
allowBlank:true,
fieldLabel: '甲方电话'
},{
name:'taxNum',
xtype:'textfield',
fieldLabel: '甲方税号',
allowBlank:true,
regex: /^[\w-]{15}([\w-]{3})?$/
},{
name:'bankName',
xtype:'textfield',
allowBlank:true,
fieldLabel: '甲方开户行'
},{
name:'bankNum',
xtype:'textfield',
allowBlank:true,
fieldLabel: '银行账号'
},{
name:'financer',
xtype:'textfield',
allowBlank:true,
fieldLabel: '账单负责人'
},{
fieldLabel : '纳税人证明1*',
xtype : 'fileuploadfield',
name : 'taxpayerFile1',
allowBlank:false,
buttonText: '浏览',
},{
fieldLabel : '纳税人证明2*',
xtype : 'fileuploadfield',
name : 'taxpayerFile2',
buttonText: '浏览',
allowBlank:true,
},{
fieldLabel : '合同文件',
xtype : 'fileuploadfield',
name : 'docmentFile',
buttonText: '浏览',
allowBlank:true,
},{
fieldLabel: '服务开始时间*',
name: 'sdate',
allowBlank:false,
xtype:'datefield',
format:'Y-m-d',
},{
fieldLabel: '服务结束时间*',
name: 'edate',
allowBlank:false,
xtype:'datefield',
format:'Y-m-d'
},{
fieldLabel: '付费账期/天*',
name: 'paymentDays',
allowBlank:false,
xtype:'numberfield'
},{
fieldLabel: '金额/月*',
name: 'amount',
allowBlank:false,
xtype:'numberfield'
},{
fieldLabel: '销售人*',
name: 'saler',
allowBlank:false,
xtype:'textfield'
},{
fieldLabel: '备注',
name: 'content',
height:135,
allowBlank:true,
xtype:'textarea'
}
],
buttons:[{
text:'确定',
handler: function(){
var form =uploadForm.getForm();
form.submit({
url: adr,
method:'POST',
params: {
clientId: clientId
},
success: function(from,action){
if(action.result){
Ext.MessageBox.alert('提示',action.result.message);
}else{
Ext.MessageBox.alert('提示','返回值不存在');
}
// uploadForm.getForm().reset();
}, failure: function (from,action) {
Ext.MessageBox.alert('失败',"上传失败,请检查内容后尝试!");
win.hide();
},
});
}
}]
}) ;
uploadForm.load({  //动态加载数据
url:findadr,
});
var win=new Ext.Window({
title : '上传新文档',
width : 600,
autoHeight: true,
border : false,
plain : true,
modal : true,
layout : 'fit',
bodyStyle : 'padding:5px;',
maximizable : false,// 禁止最大化
closeAction : 'hide',
closable : true,// 是否有关闭
collapsible : false,// 可折叠
iconCls : 'bind',
buttonAlign:'center',
items : [uploadForm],
});
win.show();
},

结果:

Extjs在form展示后台单个对象的属性的更多相关文章

  1. WPFS数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)

    WPFS数据绑定(要是后台类对象的属性值发生改变,通知在"client界面与之绑定的控件值"也发生改变须要实现INotitypropertyChanged接口) MainWindo ...

  2. 32)PHP,遍历对象的属性或者属性值

    首先是遍历属性: <?php class A{ ; ; ; function fetchAllProp(){ //遍历时,key取得属性名,value取得对应值 foreach($this as ...

  3. Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合

    今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...

  4. MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合

    MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合 1.基本数据类型 我们常见有传递 int, string, bool, double, decimal 等类型. 需要注意的是前台传递的参 ...

  5. ajax传递数组、form表单提交对象数组

    在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致,那么传值就没有什么问题.不过,在前几天的开发 ...

  6. form表单传递对象数组

    ajax传递数组.form表单提交对象数组 在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用 form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致 ...

  7. Javascript - ExtJs - Ext.form.Panel组件

    FormPanel组件(Ext.form.FormPanel) logogram:Ext.form.Panel | xtype:form Ext.form.Panel.配置 frame }//旗下所有 ...

  8. [oldboy-django][2深入django]后台生成form标签并设置标签的属性

    # Form生成html标签 a. 通过Form生成Input输入框,Form标签,以及submit标签还是要在前端写的, 但是Form标签内的Input标签可以在后台实现:只需要按以下步骤 - vi ...

  9. easyUI中datagrid展示对象下属性以及显示多个子属性(Day_37)

    easyUI中datagrid展示对象下属性以及显示多个子属性 显示对象单个属性值 添加formatter属性 <th field="decidedzone" width=& ...

随机推荐

  1. 【SPOJ - LCS2】Longest Common Substring II【SAM】

    题意 求出多个串的最长公共子串. 分析 刚学SAM想做这个题的话最好先去做一下那道codevs3160.求两个串的LCS应该怎么求?把一个串s1建自动机,然后跑另一个串s2,然后找出s2每个前缀的最长 ...

  2. Docker学习记录常用命令

    1. docker ps  -a 查看运行中的容器 2. docker images 查看docker镜像 3. docker rm id(容器id)  删除容器(容器id可以通过docker ps查 ...

  3. nodejs、webpack

    开发环境,直接本机下载代码回来,装好nodejs.webpack(安装方法 npm install webpack -g), 切换到项目根目录下 1.安装依赖:npm install 2.执行webp ...

  4. html 图片拖动不出来的脚本

    function imgdragstart() { return false; } $(function(){ for (i in document.images) document.images[i ...

  5. Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器

    关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务 ...

  6. Node.js基本使用(超基础)

    Node.js是什么 Node.js是一个能够在服务器端运行JavaScript的开放源代码.跨平台JavaScript运行环境 Node采用Google开发的V8引擎运行js代码,使用事件驱动.非阻 ...

  7. HDU 6097 Mindis (计算几何)

    题意:给一个圆C和圆心O,P.Q是圆上或圆内到圆心距离相等的两个点,在圆上取一点D,求|PD| + |QD|的最小值 析:首先这个题是可以用三分过的,不过也太,.... 官方题解: 很不幸不总是中垂线 ...

  8. loadFileSystems error & ExceptionUtils错误原因分析

    loadFileSystems error & ExceptionUtils错误原因分析 一见 2014/5/7 C/C++程序通过hdfs.h访问HDFS,运行时遇到如下错误,会是什么原因了 ...

  9. IE6,7,8 CSS HACK

    1.区别IE和非IE浏览器CSS HACK代码 #divcss5{ background:blue; /*非IE 背景藍色*/ background:red \9; /*IE6.IE7.IE8背景紅色 ...

  10. 关于innerHTML以及html2dom

    使用innerHTML或者insertAdjacentHTML 创建元素的时候能给我们带来很大的方便,为domNode 赋予innerHTML 属性,在插入大量的HTML的时候,使用innerHTML ...