我自己重写 Ext.form.TwinTriggerField ,文本框点击后面按钮,弹出 Window 页面,选择值


          最近做 一个项目,要用到 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);


希望大家多提建议和意见,共同进步,谢谢了





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值