ext js 拖拉框

本文详细介绍了如何使用Ext JS实现拖放框功能,包括创建数据存储、定义列配置、设置拖放功能以及处理拖放操作的逻辑。通过示例代码展示了融资机构和选中用户的拖放交互,提供了重置、确定和关闭等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ext.BLANK_IMAGE_URL = __prime.constants.contentPath + '/ext/resources/images/default/s.gif';
var clientWidth = document.body.clientWidth - 15;
var clientHeight = document.body.clientHeight;
var selectbankInfoArr= [];
var data = [];
var bankCde = "";
var treeFlag = true;
var bankInfoField =null;
//用户集、选中用户 共同使用的数据映射关系
var bankFields = [
    {name:'bankCde', mapping:'bankCde'} ,
    {name:'bankName', mapping:'bankName'}
];
//融资机构    
bankInfoStore = new Ext.data.JsonStore({
    url : __prime.constants.contentPath + '/bankTreeMngAction_doListBank.action',
    root : 'data',
    fields : bankFields
});
bankInfoStore.load();


var bankInfoCols = [
    {
         header:'融资机构',            
         dataIndex:'bankCde',
         renderer : function (data, metadata, record, rowIndex, columnIndex, store) {
                     metadata.attr = 'ext:qtip="'+record.get('bankName')+'"';
                    var displayText = record.get('bankName')
                    return displayText;
                  }
    },{
        header:'银行代码',            
        dataIndex:'bankCde',
        hidden:true
       }
  ]

//用户集
var bankFirstGrid = new Ext.grid.GridPanel({
    id                    : 'first',
    ddGroup              : 'secondGridDDGroup',
    border                : false,
    store                : bankInfoStore,
    columns              : bankInfoCols,
    enableDragDrop       : true,
    stripeRows           : true,
    loadMask              : true,
    width                : clientWidth*0.3,
    region               : 'west',
    viewConfig            : {
        forceFit : true     
    },
    tbar: [{
        xtype        : 'textfield',
        name :'bankName',
        id : 'bankName',
        maxLength     : 30,
        width         : 100
        },' ',' ',' ',' ', new Ext.form.TwinTriggerField({
        xtype            : 'twintriggerfield',
        trigger1Class    : 'x-form-search-trigger',
        trigger2Class    : 'x-form-clear-trigger',
        maxLength         : 30,
        width             : 35,
        onTrigger1Click : function(){
            bankInfoStore.baseParams.bankName = Ext.getCmp('bankName').getValue();
            bankInfoStore.load();
        },
        onTrigger2Click : function(){
            Ext.getCmp('bankName').setValue('');
            bankInfoStore.baseParams.bankName = '';
        }
    })]
});

//选中用户 数据集
var bankSecondGridStore = new Ext.data.JsonStore({
    url        : __prime.constants.contentPath + '/bankTreeMngAction_doListBankPre.action',
    root     : 'data',
    fields     : bankFields
});
    
//选中用户
var bankSecondGrid = new Ext.grid.GridPanel({
    id                    : 'second',
    ddGroup              : 'firstGridDDGroup',
    dropConfig            : {appendOnly:true},
    border                : false,
    style                : 'border-left:1px solid #99bbe8;',
    store                : bankSecondGridStore,
    columns              : bankInfoCols,
    enableDragDrop      : true,
    enableDrag            : true,
    stripeRows           : true,
    loadMask              : true,
    width                : 120,
    region               : 'center',
    title                : '选中机构',
    viewConfig            : {
        forceFit : true     
    }
});

//用户 面板
var bankDisplayPanel = new Ext.Panel({
    layout    : 'border',
    border    : false,
    bodyStyle    : 'border-bottom: 1px solid #99bbe8;',
    items    : [
        bankFirstGrid,
        bankSecondGrid
    ],
    buttons    : [ 
        {
            text    : '重置',
            id        : 'reset',
            handler : function() {
                bankSecondGridStore.removeAll();
                data.length=0;
            }
        },{
            text     : '确定',
            id        : 'save',
            handler : function() {
                    var names=[];
                    for(var m=0;m<bankSecondGridStore.getCount();m++){
                         var bankCde= bankSecondGridStore.getAt(m).get('bankCde');
                         var bankName= bankSecondGridStore.getAt(m).get('bankName');
                         if(bankCde!= null){
                            data.push(bankCde);
                            names.push(bankName);
                        }
                    }
                // console.log(data);
                 bankInfoField.setValue(names);
                 winSetUser.hide();
                 bankInfoField = null;
            }
        },{
            text    : '关闭',
            handler    : function() {
                winSetUser.hide();
                 bankInfoField = null;
            }
        }
    ]
});
//配置用户窗口
winSetUser = new Ext.Window({
        id                : 'winSetUser',
        bodyStyle        : 'background-color:#ecf2f9;',
        width             : clientWidth*0.6,
        height             : 350,
        title             : '融资机构',
        modal             : true,
        closeAction     : 'close',
        resizable         : false,
        frame             : true,
        draggable        : false,
        animateTarget     : 'setUser',
        layout            : 'fit',
        closable        : false,
        items             : [bankDisplayPanel]
    });
    
function setUser(){
    var record = bankFirstGrid.getSelectionModel().getSelected();
    winSetUser.show();
    bankInfoStore.load();
    //选中用户向用户集 拖放时的删除动作
    var firstGridDropTargetEl =  bankFirstGrid.getView().el.dom.childNodes[0].childNodes[1];
    var firstGridDropTarget = new Ext.dd.DropTarget(firstGridDropTargetEl, {
        ddGroup    : 'firstGridDDGroup',
        copy       : true,
        notifyDrop : function(ddSource, e, data){
            function addRow(record, index, allItems) {
                ddSource.grid.store.remove(record);
            }
            Ext.each(ddSource.dragData.selections ,addRow);
            return(true);
        }
    });     
    //用户集向选中用户 拖放时的添加动作
    var secondGridDropTargetEl = bankSecondGrid.getView().el.dom.childNodes[0].childNodes[1];    
    var destGridDropTarget = new Ext.dd.DropTarget(secondGridDropTargetEl, {
        ddGroup    : 'secondGridDDGroup',
        copy       : false,
        notifyDrop : function(ddSource, e, data){
            function addRow(record, index, allItems) {
                for(var i=0; i<bankSecondGridStore.getCount(); i++){
                    if(record.data.bankCde == bankSecondGridStore.getAt(i).get('bankCde'))
                        return;
                }
                bankSecondGridStore.add(record);
            }
            Ext.each(ddSource.dragData.selections ,addRow);
            return(true);
        }
    }); 
}
        
function createBankInfoField(id,label,anchor){
    return new Ext.form.TriggerField({
        fieldLabel     : label,
        id            : id,
        name        : id,
        editable     : false,
        forceSelection : true,
        triggerAction : 'all',
        anchor:anchor,
            onSelect : function(record) {
            },
            onTriggerClick : function() {
                bankInfoField =this;
                setUser();
            }
        });
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值