Extjs Grid 拖动排序 (处理拖动后序号刷新、多行拖动序列倒序的问题)

var GridPanelMain = new Ext.grid.GridPanel({
		id : 'sortCriteriaListGrid',
        renderTo : 'sortCriteriaList',
        width : document.body.clientWidth,
        height:  document.body.clientHeight - TableHeader_1.getComputedHeight(),
		autoScroll: true,
		loadMask : {msg:"数据加载中...."},
		sm : SelectionModelMain,
        store : StoreMain,
        //拖动排序需要配置 enableDragDrop 属性 和 dropConfig属性
        enableDragDrop: true,
        dropConfig: {
            appendOnly:true
        },
        ddGroup: "GridDD",
		cm : new Ext.grid.ColumnModel([
			 new Ext.grid.RowNumberer(),
		 SelectionModelMain,
		{header:"排序规则Id", width:80, dataIndex:"sortCriteriaId",hidden:true},
		{header:"规则名称", width:100, dataIndex:"sortCriteriaName",sortable:true,renderer:sortCriteriaNameReanderer},
		{header:"规则类型", width:80, dataIndex:"sortCriteriaType",sortable:true,renderer:sortCriteriaTypeRenderer},
		{header:"是否自定义序列", width:80, dataIndex:"isCustomize",sortable:true,renderer:isCustomizeRenderer},
		{header:"录入人名字", width:80, dataIndex:"enterPersonName",hidden:true},
		{header:"录入人账户", width:80, dataIndex:"enterPersonId",hidden:true},
		{header:"录入员工编号", width:80, dataIndex:"enterEmployeeId",hidden:true},
		{header:"录入部门编号", width:80, dataIndex:"enterOrgId",hidden:true},
		{header:"录入部门名称", width:80, dataIndex:"enterOrgName",hidden:true},
		{header:"录入时间", width:80, dataIndex:"enterDate",hidden:true},
		{header:"备注", width:80, dataIndex:"remark",hidden:true}
        ])
    });

//拖动排序必须的代码
   var drogAndDrap = new Ext.dd.DropTarget(GridPanelMain.container, {
        ddGroup : 'GridDD',
        copy    : false,
        notifyDrop : function(dd, e, data) {
            var rows = data.selections;
            var index = dd.getDragData(e).rowIndex;
            if (typeof(index) == "undefined") {
                return;
            }
            //确定正序还是倒序
            var mark = true;
            gridIndex = StoreMain.indexOf(rows[0]);
            if(index<gridIndex) mark = false;
            
            for(i = 0; i < rows.length; i++) {
           	 var rowData;
            	if(mark){
            		rowData = rows[i];
                 }else{
                	rowData = rows[rows.length-i-1];
                }
                if(!this.copy) 
                    StoreMain.remove(rowData);
                StoreMain.insert(index, rowData);
            }
            var sm = Ext.getCmp('sortCriteriaListGrid').getSelectionModel();
            sm.clearSelections();
            GridPanelMain.getView().refresh();//刷新序号  
            //拖动结束后的处理逻辑
            updateIndex();        
        }
    });

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值