我刚刚学习Ext,想知道如果我定义了一个控件,这个控件能在不同的panel中使用么
我现在定义了3个panel,定义的控件只能在最后定义的那个panel中显示,前面的两个panel都无法显示出来。控件时这么定义的sDate=newExt.form.Tex...
我现在定义了3个panel,定义的控件只能在最后定义的那个panel中显示,前面的两个panel都无法显示出来。
控件时这么定义的 sDate=new Ext.form.TextField({
fieldLabel:'开始时间',
hideLabel:true,
name:'sDate',
id:'sDate',
allowBlank:false,
readonly:'false',
width:185
value:date.format('Y-m-d H:i:s')
})
sDate.on("afterrender",function(){regDateControl(sDate.getId());});
定义完之后在panel中使用hisSelectpart=new Ext.Panel({
title:'选择条件',
id:'hisSelectpart',
frame:'true',
layout:'form',
items:[{xtype:"label",text:'开始时间'},sDate]
})
在第二个panel中也这么调用,并且将第二个panel放入到不同的window中,在第一个窗体中显示,在第二个窗体中这些控件就显示不了了。。 展开
控件时这么定义的 sDate=new Ext.form.TextField({
fieldLabel:'开始时间',
hideLabel:true,
name:'sDate',
id:'sDate',
allowBlank:false,
readonly:'false',
width:185
value:date.format('Y-m-d H:i:s')
})
sDate.on("afterrender",function(){regDateControl(sDate.getId());});
定义完之后在panel中使用hisSelectpart=new Ext.Panel({
title:'选择条件',
id:'hisSelectpart',
frame:'true',
layout:'form',
items:[{xtype:"label",text:'开始时间'},sDate]
})
在第二个panel中也这么调用,并且将第二个panel放入到不同的window中,在第一个窗体中显示,在第二个窗体中这些控件就显示不了了。。 展开
4个回答
展开全部
同一个控件只能渲染到一个控件里
既然sDate要出现在多个地方,不妨这样写:
第一种方法:
var sDate=function(){
sDate=new Ext.form.TextField({
fieldLabel:'开始时间',
hideLabel:true,
name:'sDate',
id:'sDate',
allowBlank:false,
readonly:'false',
width:185
value:date.format('Y-m-d H:i:s')
})
sDate.on("afterrender",function(){regDateControl(sDate.getId());});
return sDate;
};
...
items:[{xtype:"label",text:'开始时间'},new sDate()]
...
第二种方法:
items:[{xtype:"label",text:'开始时间'},{
xtype:'textfield',
fieldLabel:'开始时间',
hideLabel:true,
name:'sDate',
id:'sDate',
allowBlank:false,
readonly:'false',
width:185
value:date.format('Y-m-d H:i:s'),
listeners:{
afterrender:function(){
regDateControl(sDate.getId());
}
}
}]
既然sDate要出现在多个地方,不妨这样写:
第一种方法:
var sDate=function(){
sDate=new Ext.form.TextField({
fieldLabel:'开始时间',
hideLabel:true,
name:'sDate',
id:'sDate',
allowBlank:false,
readonly:'false',
width:185
value:date.format('Y-m-d H:i:s')
})
sDate.on("afterrender",function(){regDateControl(sDate.getId());});
return sDate;
};
...
items:[{xtype:"label",text:'开始时间'},new sDate()]
...
第二种方法:
items:[{xtype:"label",text:'开始时间'},{
xtype:'textfield',
fieldLabel:'开始时间',
hideLabel:true,
name:'sDate',
id:'sDate',
allowBlank:false,
readonly:'false',
width:185
value:date.format('Y-m-d H:i:s'),
listeners:{
afterrender:function(){
regDateControl(sDate.getId());
}
}
}]
展开全部
后台是无法获取Ext控件的,因为Ext是通过javascript在前台画出来的控件,后台根本不知道这个控件的存在。
建议楼主把逻辑都卸载javascript中,然后需要获取数据的地方通过ajax动态获取数据,然后拿到客户端来操作,我们之前实现的一个树和表格的拖拽都是通过Ext作的,涉及到交互的地方就是通过Ajax实现的。
建议楼主把逻辑都卸载javascript中,然后需要获取数据的地方通过ajax动态获取数据,然后拿到客户端来操作,我们之前实现的一个树和表格的拖拽都是通过Ext作的,涉及到交互的地方就是通过Ajax实现的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义了一个控件不能同时渲染到两个地方啊,
你把放 sDate 的地方替换成 { xtype:'datefield',hideLabel:true,id:'sDate1',format:'Y-m-d H:i:s',value:new Date(),anchor:'95%'} 这样在使用的时候定义 也不是很麻烦
你把放 sDate 的地方替换成 { xtype:'datefield',hideLabel:true,id:'sDate1',format:'Y-m-d H:i:s',value:new Date(),anchor:'95%'} 这样在使用的时候定义 也不是很麻烦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好贴出全代码。
提示:注意EXT.WINDOW默认在关闭时会注销所有它的组件,包括全局的。
提示:注意EXT.WINDOW默认在关闭时会注销所有它的组件,包括全局的。
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询