目的:写一个按钮事件,点击时弹出一个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. 269. Alien Dictionary火星语字典(拓扑排序)

    [抄题]: There is a new alien language which uses the latin alphabet. However, the order among letters ...

  2. LoadRunner11学习记录五 -- 错误提示分析

    LoadRunner测试结果具体分析: 一.错误提示分析  分析实例: 1.Error: Failed to connect to server “172.17.7.230″: [10060] Con ...

  3. code1068 乌龟棋

    暴力显然不行,所以考虑dp 记f[i][j][k][l]为使用i张1,j张2,k张3,l张4所得到的最大分数. 对于每个f[i][j][k][l],都可以由i-1张1,j张2,k张3,l张4所得到, ...

  4. [JSON] Validating/Asserting JSON response with Jsonlurper

    import groovy.json.JsonSlurper def response = messageExchange.response.responseContent log.info &quo ...

  5. sed高级用法:模式空间(pattern space)和保持空间(hold space)

    摘自:https://blog.csdn.net/ITsenlin/article/details/21129405 sed高级用法:模式空间(pattern space)和保持空间(hold spa ...

  6. Android 修改 TextView 的全局默认颜色。

    如果你的应用中大多数TextView的颜色是红色, 或者其他颜色, 你是为每一个TextView都设置一次颜色, 还是有其他更好的办法, 这里教你怎么修改TextView的默认颜色. 当然我们Text ...

  7. RenderPage()加载局部页和传递数据

    System.Web.WebPages.WebPageBase类的方法public override HelperResult RenderPage(string path, params objec ...

  8. CodeForces 540C Ice Cave (BFS)

    题意:给定 n * m的矩阵,让你并给定初始坐标和末坐标,你只能走'.',并且走过的'.'都会变成'X',然后问你能不能在末坐标是'X'的时候走进去. 析:这个题,在比赛时就是没做出来,其实是一个水题 ...

  9. 从零开始学习前端JAVASCRIPT — 7、JavaScript基础EVENT

    1:事件驱动 1)事件:所谓事件就是js侦测到的用户的操作或是页面的一些行为(怎么发生的) 2)事件源对象:引发事件的元素.(发生在谁的身上) 3)事件处理程序:对事件处理的程序或是函数 (发生了什么 ...

  10. Head First Python之3文件与异常

    文件基本操作 Python从文本读取数据时,一次会到达一个数据行. sketch.txt文件 Man: Is this the right room for an argument? Other Ma ...