最近做 一个项目,要用到 Ext, , 但是开发过程中遇到一个问题,就是需要一个弹出也许选择值,但是在 Ext 里面发现没有提供对应的控件,但是提供了一个
Ext.form.TwinTriggerField 控件,我们可以扩展他,实现自己的控件:
我的控件如图点击旁边的放大镜弹出一个页面,页面上显示我的信息
然后我们选择我们需要的值,双击选择的值,就会讲值传回到我们的文本框中,页面同时关闭:功能描述完毕了,下面是代码:
Ext.ns('Ext.my.form');
Ext.my.form.SearchOpen = Ext.extend(Ext.form.TwinTriggerField, {
initComponent: function(config) {
Ext.my.form.SearchOpen.superclass.initComponent.call(this);
Ext.apply(this, config);
this.on('specialkey', function(f, e) {
if (e.getKey() == e.ENTER) {
this.onTrigger2Click(this.selectId, this.selectText);
}
}, this);
},
validationEvent: false,
validateOnBlur: false,
trigger2Class: 'x-form-search-trigger', //一个额外的CSS类,用来定义触发按钮样式
hideTrigger1: true,
width: 100,
hasSearch: false,
paramName: 'query',
onTrigger2Click: function() {
// var v = this.getRawValue();
//if (!this.windowPanel)
if (this.disabled == true) {
return;
}
var root = new Ext.tree.AsyncTreeNode({
id: "1",
text: "目录",
loader: new Ext.tree.TreeLoader({
url: this.url,
listeners: {
"beforeload": function(treeloader, node) {
treeloader.baseParams = {
id: node.id,
action: "tree",
method: "POST"
}
}
}
})
});
TeamValue.nodestr = this.selectText;
TeamValue.nodeIdstr = this.selectId;
//树容器
var treenode = new Ext.tree.TreePanel({
id: "selectTreeNode",
autoScroll: true,
animate: true,
root: root,
rootVisible: true,
lines: true,
enableDD: false,
containerScroll: true,
border: false,
ddAppendOnly: false,
draggable: false,
enableDrop: false,
enableDrag: false,
listeners: {
"dblclick": function(node, event) {
event.stopEvent();
Ext.get(TeamValue.nodestr).dom.value = node.text;
Ext.get(TeamValue.nodeIdstr).dom.value = node.id;
TeamValue.nodeId = node.id;
TeamValue.nodeTest = node.text;
win.hide();
}
}
});
var win = new Ext.Window({
title: this.title,
closeAction: "hide",
width: 500,
height: 400,
layout: "fit",
resizable: false,
modal: true,
items: [treenode]
});
win.show();
},
setValue: function(id, node) {
alert(this.sid);
alert(id);
}
});
var TeamValue={
nodeId:"",
nodeTest:"",
nodestr:"",
nodeIdstr:""
}
//注意这里注册只能放后面
Ext.reg('selectOpen', Ext.my.form.SearchOpen);
希望大家多提建议和意见,共同进步,谢谢了