news 2026/5/26 8:38:49

jQuery EasyUI 数据网格 - 动态改变列

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jQuery EasyUI 数据网格 - 动态改变列

jQuery EasyUI 数据网格 - 动态改变列

datagrid支持在运行时动态显示/隐藏列添加新列移除列改变列标题/宽度/对齐方式等操作。这在实际应用中非常实用,例如:

  • 用户个性化表格视图(选择显示哪些列)
  • 根据权限动态隐藏敏感列
  • 切换不同数据视图模式

官方参考:

  • 动态列示例:https://www.jeasyui.com/tutorial/datagrid/datagrid18.php
  • 在线 Demo:https://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&pitem=Context+Menu+Columns
步骤 1: 引入 EasyUI 资源
<linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/default/easyui.css"><linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/icon.css"><scripttype="text/javascript"src="https://code.jquery.com/jquery-1.12.4.min.js"></script><scripttype="text/javascript"src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
步骤 2: 创建基本 DataGrid(包含较多列)
<tableid="dg"class="easyui-datagrid"title="用户管理(动态列示例)"style="width:900px;height:500px"data-options="url:'get_users.php',fitColumns:true,pagination:true,rownumbers:true,singleSelect:true"><thead><tr><thfield="id"width="80">ID</th><thfield="username"width="100">用户名</th><thfield="name"width="100">姓名</th><thfield="email"width="180">邮箱</th><thfield="phone"width="120">电话</th><thfield="address"width="200">地址</th><thfield="regdate"width="100">注册日期</th><thfield="lastlogin"width="150">最后登录</th><thfield="status"width="80"formatter="formatStatus">状态</th></tr></thead></table><!-- 列控制按钮 --><divstyle="margin:10px 0;"><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-show"onclick="showAllColumns()">显示所有列</a><ahref="javascript:void(0)"class="easyui-linkbutton"iconCls="icon-hide"onclick="hideSomeColumns()">隐藏部分列</a><ahref="javascript:void(0)"class="easyui-menubutton"data-options="menu:'#columnMenu',iconCls:'icon-setting'">列设置</a></div><!-- 右键列菜单(可选) --><divid="columnMenu"class="easyui-menu"style="width:150px;"><divdata-options="name:'username'">用户名</div><divdata-options="name:'email'">邮箱</div><divdata-options="name:'phone'">电话</div><divdata-options="name:'address'">地址</div><divdata-options="name:'lastlogin'">最后登录</div><divclass="menu-sep"></div><divonclick="showAllColumns()">显示所有</div><divonclick="resetColumns()">重置列</div></div>
步骤 3: JavaScript 实现动态改变列
<scripttype="text/javascript">// 保存初始列配置(用于重置)varoriginalColumns=$('#dg').datagrid('getColumnFields');// 显示所有列functionshowAllColumns(){varfields=$('#dg').datagrid('getColumnFields');for(vari=0;i<fields.length;i++){$('#dg').datagrid('showColumn',fields[i]);}}// 隐藏部分列(示例)functionhideSomeColumns(){$('#dg').datagrid('hideColumn','address');$('#dg').datagrid('hideColumn','phone');$('#dg').datagrid('hideColumn','lastlogin');}// 重置列(恢复初始状态)functionresetColumns(){varfields=$('#dg').datagrid('getColumnFields');for(vari=0;i<fields.length;i++){$('#dg').datagrid('hideColumn',fields[i]);}showAllColumns();// 再全部显示}// 状态格式化(示例)functionformatStatus(value){returnvalue==1?'启用':'禁用';}// 列设置菜单点击事件$(function(){$('#columnMenu').menu({onClick:function(item){varfield=item.name;if($('#dg').datagrid('getColumnOption',field).hidden){$('#dg').datagrid('showColumn',field);}else{$('#dg').datagrid('hideColumn',field);}}});// 可选:表头右键菜单控制列显示(高级)$('#dg').datagrid({onHeaderContextMenu:function(e,field){e.preventDefault();$('#columnMenu').menu('show',{left:e.pageX,top:e.pageY});}});});</script>
核心方法总结
方法说明
$('#dg').datagrid('showColumn', 'field')显示指定列
$('#dg').datagrid('hideColumn', 'field')隐藏指定列
$('#dg').datagrid('getColumnFields')获取所有列字段名数组
$('#dg').datagrid('getColumnOption', 'field')获取指定列的完整配置对象(含 hidden 属性)
$('#dg').datagrid('resize')隐藏/显示列后调用,确保布局正确
高级用法:动态添加/移除新列(不常见,但可能)
// 添加新列(需重新定义 columns)functionaddNewColumn(){varnewColumns=[{field:'newfield',title:'新列',width:100}];$('#dg').datagrid({columns:[originalColumns.concat(newColumns)]});}
完整效果
  • 点击按钮可快速显示/隐藏列。
  • 使用下拉菜单勾选/取消列显示。
  • 右键表头弹出列控制菜单(高级体验)。
  • 表格自动调整布局。
实际应用场景
  • 用户个性化设置:记住用户偏好列(结合 localStorage)。
  • 权限控制:根据角色隐藏敏感列(如工资、身份证)。
  • 多视图切换:不同模式显示不同列集。

更多示例:

  • 官方动态列控制:https://www.jeasyui.com/tutorial/datagrid/datagrid18.php
  • 列菜单 Demo:https://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&pitem=Context+Menu+Columns

如果需要保存用户列设置到 localStorage根据权限自动隐藏列、或动态改变列标题/格式化器的完整示例,请继续提问!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 13:15:45

基于springboot + vue博物馆展览与服务一体化系统(源码+数据库+文档)

目录 基于springboot vue博物馆展览与服务一体化系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue博物馆展览与服务一体化系统 一、前言 博主介绍…

作者头像 李华
网站建设 2026/5/25 17:43:44

2026毕设ssm+vue基于框架的旅游管理系统论文+程序

本系统&#xff08;程序源码&#xff09;带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景 2023 年中国二次元产业规模已达 2,211.35 亿元&#xff0c;同比增长 12.9%&#xff0c;其中动漫内容社区贡献 27.8% 的流量入…

作者头像 李华
网站建设 2026/5/26 4:19:20

基于EmotiVoice的情感语音标注数据集构建流程

基于EmotiVoice的情感语音标注数据集构建流程 在智能语音助手越来越“懂情绪”的今天&#xff0c;我们或许已经习惯了Siri用轻快语调回应一句“我好开心”&#xff0c;或是在客服机器人那里听到一丝克制的歉意。但这些看似自然的情绪表达背后&#xff0c;是一整套复杂的数据工…

作者头像 李华
网站建设 2026/5/26 4:25:06

2026毕设ssm+vue基于框架的股票交易系统论文+程序

本系统&#xff08;程序源码&#xff09;带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景近年来&#xff0c;随着互联网技术的快速发展&#xff0c;基于Web的管理系统在各个行业中得到了广泛应用。SSM&#xff08;Spr…

作者头像 李华
网站建设 2026/5/26 0:24:49

jQuery EasyUI 菜单与按钮 - 创建分割按钮(Split Button)

jQuery EasyUI 菜单与按钮 - 创建分割按钮&#xff08;Split Button&#xff09; jQuery EasyUI 的 splitbutton 组件是一种特殊的菜单按钮&#xff0c;它将按钮分为两个部分&#xff1a; 左侧主体&#xff1a;可点击执行默认主要操作&#xff08;例如“保存”&#xff09;。…

作者头像 李华