列表形式表单面板的设计
?
1.表单:注意column布局和form布局的结合使用
class="js">/*-----1.创建表单-----*/
var basicMsgForm = new Ext.form.FormPanel({
width : 550,
autoHeight : true,
frame : true,
layout : "form", // 整个大的表单是form布局
buttonAlign : "center",
labelAlign:"right",
labelWidth : 80,
items : [{ // 行1
layout : "column", // 从左往右的布局
items : [{
columnWidth : .34, // 该列有整行中所占百分比
layout : "form", // 从上往下的布局
items : [{
name:"xmfzr",
xtype : "textfield",
fieldLabel : "项目负责人",
width : 90
},{
id:"basicId",
name:"id",
xtype:"textfield",
fieldLabel:"编号",
hidden:true,
hideLabel:true
},{
id:"basicXmid",
name:"xmid",
xtype:"textfield",
fieldLabel:"项目编号",
hidden:true,
hideLabel:true
}]
}, {
columnWidth : .33,
layout : "form",
items : [{
name:"tel",
xtype : "textfield",
fieldLabel : "联系方式",
width : 90
}]
},{
columnWidth : .3,
layout : "form",
items : [{
name:"yzbm",
xtype : "textfield",
fieldLabel : "邮政编码",
width : 60
}]
}]
}, { // 行2
layout : "column",
items : [{
layout : "form",
items : [{
name:"addr",
xtype : "textfield",
fieldLabel : "联系地址",
width : 420
}]
}]
}, {// 行3
layout : "column",
items : [{
layout:"form",
columnWidth:.5,
items:[{
name:"start_date",
xtype:"datefield",
fieldLabel:"项目开始时间",
readOnly :true,
format : 'Y-m-d',
width:150
}]
},{
layout:"form",
columnWidth:.5,
items:[{
name:"end_date",
xtype:"datefield",
fieldLabel:"项目结束时间",
readOnly:true,
format:"Y-m-d",
width:150
}]
}]
}, {// 行4
layout : "column",
items : [{
layout : "form",
columnWidth : .5,
items : [{
name:"plan_fund",
xtype : "textfield",
fieldLabel : "计划安排资金",
width : 150
}]
}, {
layout : "form",
columnWidth : .5,
items : [{
name:"actual_fund",
xtype : "textfield",
fieldLabel : "实际到位资金",
width : 150
}]
}]
}, {// 行4
layout : "column",
items : [{
layout : "form",
columnWidth : .5,
items : [{
name:"central_pfund",
xtype : "textfield",
fieldLabel : "中央财政",
width : 150
}]
}, {
layout : "form",
columnWidth : .5,
items : [{
name:"central_afund",
xtype : "textfield",
fieldLabel : "中央财政",
width : 150
}]
}]
}, {// 行4
layout : "column",
items : [{
layout : "form",
columnWidth : .5,
items : [{
name:"province_pfund",
xtype : "textfield",
fieldLabel : "省财政",
width : 150
}]
}, {
layout : "form",
columnWidth : .5,
items : [{
name:"province_afund",
xtype : "textfield",
fieldLabel : "省财政",
width : 150
}]
}]
}, {// 行4
layout : "column",
items : [{
layout : "form",
columnWidth : .5,
items : [{
name:"county_pfund",
xtype : "textfield",
fieldLabel : "县财政",
width : 150
}]
}, {
layout : "form",
columnWidth : .5,
items : [{
name:"county_afund",
xtype : "textfield",
fieldLabel : "县财政",
width : 150
}]
}]
}, {// 行4
layout : "column",
items : [{
layout : "form",
columnWidth : .5,
items : [{
name:"other_pfund",
xtype : "textfield",
fieldLabel : "其他",
width : 150
}]
}, {
layout : "form",
columnWidth : .5,
items : [{
name:"other_afund",
xtype : "textfield",
fieldLabel : "其他",
width : 150
}]
}]
},{
layout:"column",
items:[{
layout:"form",
columnWidth : .5,
items:[{
name:"actual_cost",
xtype:"textfield",
fieldLabel:"实际支出",
width:150
}]
},{
layout:"form",
columnWidth : .5,
items:[{
xtype:"textfield",
fieldLabel:"【单位】",
value:"( 万元 )",
width:150,
style:"background:none;border:0px;color:blue;font-weight:bold;",
labelStyle:"color:blue;font-weight:bold;"
}]
}]
}],
buttons : [{
text : "确认",
handler:function(){
var thisForm = basicMsgForm.getForm();
if(thisForm.isValid()){
var submitValues = thisForm.getValues();
//提交表单
thisForm.submit({
url:"insertBasicInfo.eva?doType=insertBasicInfo",
method:"POST",
waitMsg:"保存中,请稍后...",
params:submitValues,
success:function(){
Ext.Msg.alert('成功', "更新项目绩效基本情况成功!");
basicStore.reload();
},
failure:function(form,action){
Ext.Msg.alert('失败', "保存项目绩效基本情况失败!");
}
});
}
}
},{
text:"取消",
handler:function(){
basicMsgWin.hide();
}
}]
});
?
?
2.窗口:
/*-----2.创建窗口-----*/
var basicMsgWin = new Ext.Window({
title:"项目基本情况",
layout:"fit",
closeAction:"hide",
modal:true,
items:basicMsgForm
});
?
?
?
3.Store:
var basicStore = new Ext.data.JsonStore({
url:"getBasicInfo.eva?doType=getBasicInfo",
root:"data",
fields:["id","xmid","xmfzr","tel","addr","yzbm","startDate","endDate",
"planFund","actualFund","centralPfund","centralAfund","provincePfund",
"provinceAfund","countyPfund","countyAfund","otherPfund","otherAfund",
"actualCost"]
});
//加载结束后执行,把Store的值赋给Form表单
basicStore.on("load",function(){
var basicForm = basicMsgForm.getForm();
var basicRecords = basicStore.data; //获取Records记录
var basicData = basicRecords.get(0); //获取某一行的Record的Data数据
basicForm.findField("id").setValue(basicData.get("id"));
basicForm.findField("xmid").setValue(basicData.get("xmid"));
basicForm.findField("xmfzr").setValue(basicData.get("xmfzr"));
basicForm.findField("tel").setValue(basicData.get("tel"));
basicForm.findField("yzbm").setValue(basicData.get("yzbm"));
basicForm.findField("addr").setValue(basicData.get("addr"));
basicForm.findField("start_date").setValue(basicData.get("startDate"));
basicForm.findField("end_date").setValue(basicData.get("endDate"));
basicForm.findField("plan_fund").setValue(basicData.get("planFund"));
basicForm.findField("actual_fund").setValue(basicData.get("actualFund"));
basicForm.findField("central_pfund").setValue(basicData.get("centralPfund"));
basicForm.findField("central_afund").setValue(basicData.get("centralAfund"));
basicForm.findField("province_pfund").setValue(basicData.get("provincePfund"));
basicForm.findField("province_afund").setValue(basicData.get("provinceAfund"));
basicForm.findField("county_pfund").setValue(basicData.get("countyPfund"));
basicForm.findField("county_afund").setValue(basicData.get("countyAfund"));
basicForm.findField("other_pfund").setValue(basicData.get("otherPfund"));
basicForm.findField("other_afund").setValue(basicData.get("otherAfund"));
basicForm.findField("actual_cost").setValue(basicData.get("actualCost"));
});
?
?
注意在点击弹框时传递需要的ID:
......
<button class='btn1' onclick='showCostWin("+record.get("xmid")+")'>查看</button>
......
//显示收支明细窗口
function showCostWin(xmid){
Ext.getCmp("costXmid").setValue(xmid);//传递ID
costWin.show();
costStore.baseParams.xmid = xmid;
costStore.load();
}
?
?
?
4.实体类:
public class ProjectBasicInfo {
private int id;
private int xmid;
private String xmfzr;
private String tel;
private String addr;
private String yzbm;
private Date startDate;
private Date endDate;
private String planFund;
private String actualFund;
private String centralPfund;
private String centralAfund;
private String provincePfund;
private String provinceAfund;
private String countyPfund;
private String countyAfund;
private String otherPfund;
private String otherAfund;
private String actualCost;
。。。。。。set/get方法省略
}
?
5.插入数据的Servlet:(注意日期格式的转换,必须为YYYY-mm-dd才行)
ProjectBasicInfoDao dao = new ProjectBasicInfoDao();
ProjectBasicInfo basicInfo = new ProjectBasicInfo();
String id = request.getParameter("id");
if(id != null && !id.equals("")){
basicInfo.setId(Integer.valueOf(id));
}
basicInfo.setXmid(Integer.valueOf(request.getParameter("xmid")));
basicInfo.setXmfzr(request.getParameter("xmfzr"));
basicInfo.setTel(request.getParameter("tel"));
basicInfo.setYzbm(request.getParameter("yzbm"));
basicInfo.setAddr(request.getParameter("addr"));
String startDate = request.getParameter("start_date");
String endDate = request.getParameter("end_date");
if(startDate != null && !startDate.equals("")){
basicInfo.setStartDate(Date.valueOf(startDate));
}
if (endDate != null && !endDate.equals("")) {
basicInfo.setEndDate(Date.valueOf(endDate));
}
basicInfo.setPlanFund(request.getParameter("plan_fund"));
basicInfo.setActualFund(request.getParameter("actual_fund"));
basicInfo.setCentralPfund(request.getParameter("central_pfund"));
basicInfo.setCentralAfund(request.getParameter("central_afund"));
basicInfo.setProvincePfund(request.getParameter("province_pfund"));
basicInfo.setProvinceAfund(request.getParameter("province_afund"));
basicInfo.setCountyPfund(request.getParameter("county_pfund"));
basicInfo.setCountyAfund(request.getParameter("county_afund"));
basicInfo.setOtherPfund(request.getParameter("other_pfund"));
basicInfo.setOtherAfund(request.getParameter("other_afund"));
basicInfo.setActualCost(request.getParameter("actual_cost"));
dao.addProjectBadicInfo(basicInfo);
?6.Hibernate插入或更新数据方法:
/** * 插入或更新项目基本信息 * @param projectBasicInfo */ public void addProjectBadicInfo(ProjectBasicInfo projectBasicInfo) { Session s = null; try { s = HibernateUtil.getSession(); s.beginTransaction(); s.saveOrUpdate(projectBasicInfo); s.getTransaction().commit(); } catch (Throwable e) { logger.error(e.toString()); HibernateUtil.endSession(s); } finally { HibernateUtil.endSession(s); } }
?
?
7.后台获取Store数据的代码:
查看另一篇博文:http://zyjustin9.iteye.com/admin/blogs/2121569
?

?
?