zoukankan      html  css  js  c++  java
  • easyui datagrid实现拖动表头

        $.extend($.fn.datagrid.methods, {
            columnMoving: function (jq) {
                return jq.each(function () {
                    var target = this;
                    var cells = $(this).datagrid('getPanel').find('div.datagrid-header td[field]');
                    cells.draggable({
                        revert: true,
                        cursor: 'pointer',
                        edge: 5,
                        proxy: function (source) {
                            var p = $('<div class="tree-node-proxy" style="position:absolute;border:1px solid #ff0000"/>').appendTo('body');
                            p.html($(source).text());
                            p.hide();
                            return p;
                        },
                        onBeforeDrag: function (e) {
                            e.data.startLeft = $(this).offset().left;
                            e.data.startTop = $(this).offset().top;
                        },
                        onStartDrag: function () {
                            $(this).draggable('proxy').css({
                                left: -10000,
                                top: -10000
                            });
                        },
                        onDrag: function (e) {
                            $(this).draggable('proxy').show().css({
                                left: e.pageX + 15,
                                top: e.pageY + 15
                            });
                            return false;
                        }
                    }).droppable({
                        accept: 'td[field]',
                        onDragOver: function (e, source) {
                            e.stopPropagation();
                            $(source).draggable('proxy').removeClass('tree-dnd-no').addClass('tree-dnd-yes');
                            $(this).css('border-left', '1px solid #ff0000');
                        },
                        onDragLeave: function (e, source) {
                            e.stopPropagation();
                            $(source).draggable('proxy').removeClass('tree-dnd-yes').addClass('tree-dnd-no');
                            $(this).css('border-left', 0);
                        },
                        onDrop: function (e, source) {
                            e.stopPropagation();
                            $(this).css('border-left', 0);
                            var fromField = $(source).attr('field');
                            var toField = $(this).attr('field');
                            setTimeout(function () {
                                moveField(fromField, toField);
                                $(target).datagrid();
                                $(target).datagrid('columnMoving');
                            }, 0);
                        }
                    });
    
                    // move field to another location
                    function moveField(from, to) {
                        var columns = $(target).datagrid('options').columns;
                        var cc = columns[0];
                        var c = _remove(from);
                        if (c) {
                            _insert(to, c);
                        }
    
                        function _remove(field) {
                            for (var i = 0; i < cc.length; i++) {
                                if (cc[i].field == field) {
                                    var c = cc[i];
                                    cc.splice(i, 1);
                                    return c;
                                }
                            }
                            return null;
                        }
    
                        function _insert(field, c) {
                            var newcc = [];
                            for (var i = 0; i < cc.length; i++) {
                                if (cc[i].field == field) {
                                    newcc.push(c);
                                }
                                newcc.push(cc[i]);
                            }
                            columns[0] = newcc;
                        }
                    }
                });
            }
        });

    调用方法

    $("#enterpriseList").datagrid().datagrid("columnMoving");

    如果这篇文章对您有帮助,您可以打赏我

    技术交流QQ群:15129679

     
     
  • 相关阅读:
    通过日期获取星期几,通过日期获取凌晨、上午、中午、下午、晚上
    asp.net 格式化显示时间为几个月,几天前,几小时前,几分钟前,或几秒前
    继承和多态 复习
    .net 缩略图 宽高比 .js缩略图 宽高比
    显示实现接口和实现接口的区别
    HDMI信号解析
    锂电池充电过程
    HDMI接口基础知识及硬件设计
    HDMI传输原理:TMDS
    为什么有些信号线串接33R小电阻?
  • 原文地址:https://www.cnblogs.com/yeminglong/p/9036152.html
Copyright © 2011-2022 走看看