jquery-easyui中datagrid扩展,隐藏显示表头功能

川长思鸟来 2022-08-14 04:51 439阅读 0赞

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

使用方法:

复制代码

  1. _this.$table.datagrid(_.extend({
  2. fit: true,
  3. border: false,
  4. striped: true,
  5. method: "get",
  6. pagination: true,
  7. singleSelect: true,
  8. loadMsg: "加载数据中...",
  9. columns: _this.getTableColumns(),
  10. onResize: function () {
  11. if (_this.$ajaxDialog) {
  12. _this.$ajaxDialog.dialog("restore");
  13. _this.$ajaxDialog.dialog("maximize");
  14. }
  15. },
  16. onSelect: function (rowIndex, rowData) {
  17. _this.currentRow = rowData;
  18. _this.currentRowIndex = rowIndex;
  19. _this.toolbarViewModel.disabled(false);
  20. },
  21. onLoadError: function () {
  22. // $.messager.alert("提示", "服务器忙,请稍后再试!", "warning");
  23. },
  24. onHeaderContextMenu: function (e, field) {
  25. $.fn.easyuiExtension.showHideColumns(_this.$table, {
  26. left: e.clientX,
  27. top: e.clientY
  28. });
  29. e.preventDefault();
  30. },
  31. onRowContextMenu: function (e, rowIndex, rowData) {
  32. e.preventDefault();
  33. $(this).datagrid("unselectAll");
  34. $(this).datagrid("selectRow", rowIndex);
  35. if (_this.$menu) {
  36. _this.$menu.menu("show", {
  37. left: e.pageX,
  38. top: e.pageY
  39. });
  40. }
  41. }
  42. }, options));

复制代码

复制代码

  1. $.fn.easyuiExtension = {
  2. showHideColumns: function ($table, position) {
  3. var $menus = $(document.createElement("div"));
  4. var canClick = true, nonHiddenCount = 0;
  5. var columnsFields = $table.datagrid("getColumnFields"),
  6. columns = [],
  7. columsDetail;
  8. for (var i in columnsFields) {
  9. columsDetail = $table.datagrid("getColumnOption", columnsFields[i]);
  10. columns.push(columsDetail);
  11. }
  12. if (columns.length) {
  13. $menus.menu({
  14. hideOnUnhover: false,
  15. duration: 200,
  16. onHide: function () {
  17. setTimeout(function () {
  18. $menus.menu("destroy");
  19. }, 200);
  20. },
  21. onClick: function (item) {
  22. if (canClick || !item.iconCls) {
  23. $table.datagrid((item.iconCls ? "hideColumn" : "showColumn"), item.id);
  24. }
  25. }
  26. });
  27. for (var i in columns) {
  28. var item = columns[i];
  29. !item.hidden && nonHiddenCount++;
  30. $menus.menu("appendItem", {
  31. text: item.title,
  32. id: item.field,
  33. iconCls: item.hidden ? "" : "icon-ok"
  34. });
  35. }
  36. canClick = nonHiddenCount > 1;
  37. $menus.menu("show", position);
  38. }
  39. }
  40. };

复制代码

效果如下:

021718138268829.png

041405283617635.gif

发表评论

表情:
评论列表 (有 0 条评论,439人围观)

还没有评论,来说两句吧...

相关阅读

    相关 easyui datagrid表头设置

      最近在做二维报表,要求报表的表头自定义。在网上找了好久二维报表的插件,一直找不到合适的。后来就用easyui 中的datagrid替代了一下。   根据实际需求