5个实用技巧:彻底解决多平台音乐搜索难题的完整方案
2026/6/6 5:10:01
datagrid支持在运行时动态显示/隐藏列、添加新列、移除列、改变列标题/宽度/对齐方式等操作。这在实际应用中非常实用,例如:
官方参考:
<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><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><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、根据权限自动隐藏列、或动态改变列标题/格式化器的完整示例,请继续提问!