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

     
     
  • 相关阅读:
    CentOS内核优化提示:cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: 没有那个文件或目录
    CentOS 7使用通过二进制包安装MySQL 5.7.18
    MySQL错误:TIMESTAMP with implicit DEFAULT value is deprecated
    CentOS增加用户到sudo用户组
    Linux下Shell函数返回值实现种类
    Nginx配置直接php
    Nginx报Primary script unknown的错误解决
    CentOS下的apache配置支持php
    CentOS 7解压安装PHP5.6.13
    [ASP.NET MVC] 利用自定义的AuthenticationFilter实现Basic认证
  • 原文地址:https://www.cnblogs.com/yeminglong/p/9036152.html
Copyright © 2011-2022 走看看