zoukankan      html  css  js  c++  java
  • jquery-easyui中datagrid扩展,隐藏显示表头功能

    今天,后台中需要新增一个功能,用户可以自由选择显示的列,之后保存到本地localStroage中。所以扩展了easyui中datagrid的onHeaderContextMenu方法。

    使用方法:

     _this.$table.datagrid(_.extend({
                        fit: true,
                        border: false,
                        striped: true,
                        method: "get",
                        pagination: true,
                        singleSelect: true,
                        loadMsg: "加载数据中...",
                        columns: _this.getTableColumns(),
                        onResize: function () {
                            if (_this.$ajaxDialog) {
                                _this.$ajaxDialog.dialog("restore");
                                _this.$ajaxDialog.dialog("maximize");
                            }
                        },
                        onSelect: function (rowIndex, rowData) {
                            _this.currentRow = rowData;
                            _this.currentRowIndex = rowIndex;
                            _this.toolbarViewModel.disabled(false);
                        },
                        onLoadError: function () {
                            // $.messager.alert("提示", "服务器忙,请稍后再试!", "warning");
                        },
                        onHeaderContextMenu: function (e, field) {
                            $.fn.easyuiExtension.showHideColumns(_this.$table, {
                                left: e.clientX,
                                top: e.clientY
                            });
                            e.preventDefault();
                        },
                        onRowContextMenu: function (e, rowIndex, rowData) {
                            e.preventDefault();
                            $(this).datagrid("unselectAll");
                            $(this).datagrid("selectRow", rowIndex);
    
                            if (_this.$menu) {
                                _this.$menu.menu("show", {
                                    left: e.pageX,
                                    top: e.pageY
                                });
                            }
                        }
                    }, options));
    $.fn.easyuiExtension = {
                    showHideColumns: function ($table, position) {
                        var $menus = $(document.createElement("div"));
                        var canClick = true, nonHiddenCount = 0;
                        var columnsFields = $table.datagrid("getColumnFields"),
                            columns = [],
                            columsDetail;

                        for (var i in columnsFields) {
                            columsDetail = $table.datagrid("getColumnOption", columnsFields[i]);
                            columns.push(columsDetail);
                        }
                       
                        if (columns.length) {
                            $menus.menu({
                                hideOnUnhover: false,
                                duration: 200,
                                onHide: function () {
                                    setTimeout(function () {
                                        $menus.menu("destroy");
                                    }, 200);
                                },
                                onClick: function (item) {
                                    if (canClick || !item.iconCls) {
                                        $table.datagrid((item.iconCls ? "hideColumn" : "showColumn"), item.id);
                                    }
                                }
                            });

                            for (var i in columns) {
                                var item = columns[i];
                                !item.hidden && nonHiddenCount++;
                                $menus.menu("appendItem", {
                                    text: item.title,
                                    id: item.field,
                                    iconCls: item.hidden ? "" : "icon-ok"
                                });
                            }
                            canClick = nonHiddenCount > 1;
                            $menus.menu("show", position);
    } } };

    效果如下:

  • 相关阅读:
    Douglas-Peucker 轨迹压缩算法
    Marching squares 算法 获取轮廓(contour tracing)
    创建Mesh->格子地图转NavMesh->可破坏墙壁
    StretchedBillboard 实现
    程序员的微创业
    买云服务器有推荐吗?国内知道有腾讯云、阿里云...等等,不知道该选哪个好了,另外优惠吗?
    我的阿里云5年
    2021阿里云、腾讯云、华为云、滴滴云评测比较
    终于找到可以一文多发的平台了!
    2019年最新阿里云主机优惠购买指南
  • 原文地址:https://www.cnblogs.com/nicktyui/p/4138027.html
Copyright © 2011-2022 走看看