jquery-easyui中datagrid擴充,隱藏顯示表頭功能

來源:互聯網
上載者:User

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); } } };

效果如下:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.