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

     
     
  • 相关阅读:
    Thread.GetNamedDataSlot(String)
    .NET Core 常用加密和Hash工具NETCore.Encrypt
    .netcore在linux下使用P/invoke方式调用linux动态库
    IHttpAsyncHandler IHttpHandler
    Docker & ASP.NET Core 教程
    Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台
    《异常检测》
    《awesome-AIOps》
    《Skyline 监控系统工作原理分析》
    《小团队撬动大数据——当当推荐团队的机器学习实践》
  • 原文地址:https://www.cnblogs.com/yeminglong/p/9036152.html
Copyright © 2011-2022 走看看