当前位置:编程学习 > JAVA >>

Ext window中有一个pannel,pannel上的按钮只能提交一次

var order_storevb = new Ext.data.SimpleStore({
// autoLoad : true,
url : __ctxPath + "/getProNameId.action",
fields : ['productid', 'productname']
});

idn = 0;
var proNameId;// 产品名称Id
var desId; // 目的地Id
function addProduct() {
var txtPanel = new Ext.form.FormPanel({
id : 'txt' + idn,
// title : '添加产品',
renderTo : document.body,
labelAlign : 'left',
buttonAlign : 'right',
layout : 'form',
frame : true,
border : false,// 没有边框
items : [new Ext.form.ComboBox({
fieldLabel : '产品名称',
// xtype : 'combo',
name : 'propertyName',
store : new Ext.data.SimpleStore({
autoLoad : true,
mode : 'local',
url : __ctxPath
+ "/getProNameId.action",
fields : ['productid', 'productname']
}),
emptyText : '--请选择产品名称--',
triggerAction : 'all',
allowBlank : false,
valueField : 'productid',
displayField : 'productname',
editable : false,// 是否允许输入
forceSelection : true,// 必须选择一个选项
listeners : {
'select' : function(combo, record, index) {
proNameId = record.get("productid");
}
}

}), new Ext.form.NumberField({
fieldLabel : '产品发货数量',
allowBlank : false,
name : 'propertyValue'
})]
});
idn = idn + 1;

Ext.getCmp('order_form').add(txtPanel);
Ext.getCmp('order_form').doLayout();

return txtPanel;
};

Ext.apply(Ext.form.VTypes, {
dateRange : function(val, field) {
if (field.dateRange) {
if (field.dateRange.begin) {// 控制结束时间要大于开始时间
var beginId = field.dateRange.begin;
this.beginField = Ext.getCmp(beginId);
var beginDate = this.beginField.getValue();
field.setMinValue(beginDate);// 设置结束时间的最小值
}

if (field.dateRange.end) {// 控制开始时间要小于结束时间

var endId = field.dateRange.end;

this.endField = Ext.getCmp(endId);

var endDate = this.endField.getValue();

field.setMaxValue(endDate);// 设置开始时间最大值
}
return true;
}
return false;
},
dateRangeText : '交货时间必须在订单时间之后!'
});
// function createPanel(){
var order_form = new Ext.form.FormPanel({
id : 'order_form',
name : 'orderFormName',
title : '',

buttonAlign : 'left',
autoHeight : true,
border : false,
frame : true,
autoScroll : true,
tbar : [{
xtype : 'tbseparator'
}, {
xtype : 'button',
text:'添加产品'
,
handler:addProduct
}],
items : [new Ext.form.TextField({
fieldLabel : '订单号',
vtype : 'alphanum',
vtypeText : "只能输入字母,数字!",
// xtype : 'textfield',
id : 'orderIDre',
name : 'order.orderID',
allowBlank : false,
blankText : '不能为空!'
}), new Ext.form.TextField({
fieldLabel : '订单编号',
vtype : 'alphanum',
vtypeText : "只能输入字母,数字!",
// xtype : 'textfield',
id : 'orderNore',
name : 'order.orderNo',
allowBlank : false,
blankText : '不能为空!'
}), new Ext.form.TextField({
fieldLabel : '订货单位名称',
// xtype : 'textfield',
regex : /^[^<]*$/,
regexText : "不能输入<>!",
id : 'ordersCmpNamere',
name : 'order.ordersCmpName',
allowBlank : false,
blankText : '不能为空!'
}), new Ext.form.ComboBox({
fieldLabel : '目的地',
emptyText : '--请选择目的地--',
// xtype : 'combo',
id : 'destinationIDre',
editable : false,
triggerAction : 'all',
name : 'order.destinationID',
hiddenName : 'order.destinationID',
mode : "local",
allowBlank : false,
blankText : '不能为空!',
store : new Ext.data.SimpleStore({
autoLoad : true,
url : __ctxPath + "/getProvinceName.action",
fields : ["valueId", "displayText"]
}),
valueField : "valueId",
displayField : "displayText",
listeners : {
'select' : function(combo, record, index) {
desId = record.get("valueId");
}
}
}), new Ext.form.TextField({
fieldLabel : '发往地址',
// xtype : 'textfield',
id : 'sendToStrre',
regex : /^[^<]*$/,
regexText : "不能输入<>!",
name : 'order.sendToStr',
allowBlank : false,
blankText : '不能为空!'
}), new Ext.form.DateField({
fieldLabel : '订货时间',
emptyText : '--请选择时间--',
format : 'Y-m-d H:i:s',
editable : false,
allowBlank : false,
id : 'orderTimere',
name : 'order.orderTime',
blankText : '不能为空!',
vtype : 'dateRange',// dateRange类型为上代码定义的类型
dateRange : {
end : 'deliveryTermre' // 必须跟endDate的id名相同
}
}), new Ext.form.DateField({
fieldLabel : '交货时间',
emptyText : '--请选择时间--',
format : 'Y-m-d H:i:s',
allowBlank : false,
editable : false,
id : 'deliveryTermre',
name : 'order.deliveryTerm',
blankText : '不能为空!',
vtype : 'dateRange',// dateRange类型为上代码定义的类型
dateRange : {
begin : 'orderTimere'// 必须跟startDate的id名相同
}
})],
buttons : [{
text : '保存',
handler : function() {
var Jtype = [];// 存储基本产品信息
var Ttype = [];// 存储两个特殊的产品类型 及数量
var tempID = 0;
var temp = [];
Jtype.push(['{destinationIDre:"' + desId + '"}']); // 存储目的地Id
var orderPanel = Ext.getCmp('order_form');
for (var i = 0; i < orderPanel.items.getCount(); i++) {
var op = orderPanel.get(i);
if (op.id == "orderIDre") {
var name = orderPanel.getForm().findField('orderIDre')
.getValue();
if (null != name && "" != name) {
Jtype.push(['{orderIDre:"' + name + '"}']);
}
} else if (op.id == "orderNore") {
var name = orderPanel.getForm().findField('orderNore')
.getValue();
if (null != name && "" != name) {
Jtype.push(['{orderNore:"' + name + '"}']);
}
} else if (op.id == "ordersCmpNamere") {
var name = orderPanel.getForm()
.findField('ordersCmpNamere').getValue();
if (null != name && "" != name) {
Jtype.push(['{ordersCmpNamere:"' + name + '"}']);
}
} else if (op.id == "sendToStrre") {
var name = orderPanel.getForm().findField('sendToStrre')
.getValue();
if (null != name && "" != name) {
Jtype.push(['{sendToStrre:"' + name + '"}']);
}
} else if (op.id == "orderTimere") {
var name = orderPanel.getForm().findField('orderTimere')
.getValue();
if (null != name && "" != name) {
var a = new Date(name);
a = a.format('Y-m-d H:i:s');
Jtype.push(['{orderTimere:"' + a + '"}']);
}
} else if (op.id == "deliveryTermre") {
var name = orderPanel.getForm().findField('deliveryTermre')
.getValue();
if (null != name && "" != name) {
var b = new Date(name);
b = b.format('Y-m-d H:i:s');
Jtype.push(['{deliveryTermre:"' + b + '"}']);
}
} else if (op.id == 'txt' + tempID) {
Ttype.push([
'{propertyName' + tempID + ':"'
+ op.get(0).getValue() + '"',
'propertyValue' + tempID + ':"'
+ op.get(1).getValue() + '"}']); // 产品类型
// 数量
tempID = tempID + 1;
}
}
Jtype = '{"Jtype":[' + Jtype + ']}';
Ttype = '{"Ttype":[' + Ttype + ']}';
temp.push(Jtype);
temp.push(Ttype);
temp = '[' + temp + ']';
if (orderPanel.getForm().isValid()) {
Ext.getCmp('order_form').getForm().submit({
url : __ctxPath + '/validateOrderID.action',// 请求的url地址
method : 'POST',// 请求方式
params : {
temp : temp
// 伪后台传封装好的json
},
success : function(form, action) {
Ext.Msg.alert('信息', action.result.res.info);
Ext.getCmp('order_form').form.reset();
},
failure : function(form, action) {// 加载失败的处理函数
Ext.Msg.alert('信息', action.result.res.info);
}
});
}

}

}, {
text : '重置',
handler : function() {
Ext.getCmp('order_form').form.reset();
}

}, {
text : '关闭',
handler : function() {
if (idn > 0) { // 销毁手动添加的控件
for (var i = 0; i < idn; i++) {
var idnn = 'txt' + i;
Ext.getCmp(idnn).destroy();
}
};

idn = 0;
addOrderWin.hide();
}

}]
});


count1 = 0;
var addOrderWin;
function showAddOrder() {
if (!addOrderWin) {
addOrderWin = new Ext.Window({
id : 'addOrderId' + count1,
title : '新增订单信息',
width : 500,
height : 400,
autoScroll : true,
closeAction : 'hide',
closable : false,// 去掉按钮
modal : true,
items : order_form
});
}
addOrderWin.show();
count1++;
};


如图点击关闭之后在新建添加,保存按钮就没有效果。
--------------------编程问答--------------------  用Firefox调试下,看看是什么问题,据我判断是作用域问题,
 建议把“添加产品”的按钮放到外面的window上,每次添加产品时创建新的 FormPanel。
--------------------编程问答--------------------
引用 1 楼 aaxuelian 的回复:
用Firefox调试下,看看是什么问题,据我判断是作用域问题,
 建议把“添加产品”的按钮放到外面的window上,每次添加产品时创建新的 FormPanel。

用firBug看了,他报如下错误, 其中650行是这句:if (orderPanel.getForm().isValid()) {。。}删除此句还会错。按照你说的吧添加产品写到window上面,还是错误。

补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,