Extjs在form展示后台单个对象的属性
目的:
写一个按钮事件,点击时弹出一个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展示后台单个对象的属性的更多相关文章
- WPFS数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)
WPFS数据绑定(要是后台类对象的属性值发生改变,通知在"client界面与之绑定的控件值"也发生改变须要实现INotitypropertyChanged接口) MainWindo ...
- 32)PHP,遍历对象的属性或者属性值
首先是遍历属性: <?php class A{ ; ; ; function fetchAllProp(){ //遍历时,key取得属性名,value取得对应值 foreach($this as ...
- Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合
今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...
- MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合
MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合 1.基本数据类型 我们常见有传递 int, string, bool, double, decimal 等类型. 需要注意的是前台传递的参 ...
- ajax传递数组、form表单提交对象数组
在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致,那么传值就没有什么问题.不过,在前几天的开发 ...
- form表单传递对象数组
ajax传递数组.form表单提交对象数组 在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用 form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致 ...
- Javascript - ExtJs - Ext.form.Panel组件
FormPanel组件(Ext.form.FormPanel) logogram:Ext.form.Panel | xtype:form Ext.form.Panel.配置 frame }//旗下所有 ...
- [oldboy-django][2深入django]后台生成form标签并设置标签的属性
# Form生成html标签 a. 通过Form生成Input输入框,Form标签,以及submit标签还是要在前端写的, 但是Form标签内的Input标签可以在后台实现:只需要按以下步骤 - vi ...
- easyUI中datagrid展示对象下属性以及显示多个子属性(Day_37)
easyUI中datagrid展示对象下属性以及显示多个子属性 显示对象单个属性值 添加formatter属性 <th field="decidedzone" width=& ...
随机推荐
- 【Todo】Linux进程调度算法学习
参考这篇文章 http://blog.chinaunix.net/uid-27052262-id-3239260.html Linux支持三种进程调度策略,分别是SCHED_FIFO . SCHED_ ...
- 【bzoj3667】Rabin-Miller算法
3667: Rabin-Miller算法 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 1200 Solved: 363[Submit][Statu ...
- Spark internal - 多样化的运行模式 (下)
Spark的各种运行模式虽然启动方式,运行位置,调度手段有所不同,但它们所要完成的任务基本都是一致的,就是在合适的位置安全可靠的根据用户的配置和Job的需要管理和运行Task,这里粗略的列举一下在运行 ...
- Appium+python自动化-Remote远程控制
前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙 ...
- 面向对象的JavaScript-001
一. Question是父类,MultipleChoiceQuestion和DragDropQuestion是子类 二. 1. <script> // 面向对象 function Ques ...
- maven 执行本地、服务器 jar包安装
开发时遇到过第三方jar包依赖不了时的尴尬 因为遇到过几次所以记录一下,POM文件引入的个推jar包无效,就必须本地安装了,服务器上的也是一样,执行相同的maven命令就行,注意修改路径!和将jar包 ...
- AutoComplete的extraParams动态传递参数
AutoComplete可利用extraParams传递参数,如 extraParams:{para1:'参数1',para2:'参数2'} 但是,如需动态取值作为参数值时却无法达到期望目的,可改为配 ...
- Web测试实践--Rec 2
累计完成任务情况: 阶段内容 参与人 进行用户调研 小熊 开会学习作业要求,取得共识 全体 注: 1."阶段内容"划斜线表示完成.2.采用倒序. 具体情况: 小熊主要围绕以下几方面 ...
- CMDB小练习
为什么要用CMDB? 因为公司之前统计资产信息用的是excel表格,随着业务的增加和信息的变更,这个表格变得越来越乱,所以我们就想着编写出一套自动管理资产信息的系统,实现自动管理资产信息 三种方案? ...
- Logback configuration
官方指导 http://logback.qos.ch/manual/configuration.html 规则 ch.qos.logback.core.joran.JoranConfiguratorB ...