/字段过滤控制插件-DataGrid Column Sidebar)
DataGrid Column Sidebar — IDEA/DataGrip 数据库列管理侧边栏插件解决的问题在使用 JetBrains DataGrip及 Idea 查询数据库时当表字段较多如 50 列数据网格会变得非常宽用户难以快速找到目标列也无法方便地隐藏不关心的列。更关键的是DataGrip/idea 原生不支持列冻结Freeze Column无法像 Excel 或 DBeaver 那样将某列固定在左侧、水平滚动时始终可见。DataGrip/IDEA 原生提供了CtrlF12弹窗来管理列显隐但存在以下痛点不支持列冻结— 无法将关键列如主键 id固定在左侧滚动时容易丢失上下文弹窗是临时的— 每次操作完弹窗就关闭了无法持久展示列列表无法批量操作— 没有全选、反选功能面对大量列时操作效率低无法快速定位— 隐藏/显示某列后无法一键跳转到该列在网格中的位置切换查询后状态丢失— 每次打开弹窗都需要重新查找目标列目前已上架插件市场: 搜索DataGrid Column Sidebar即可找到背景 灵感来源本插件参考了DBeaver的「结果集的排序/过滤设置」功能。DBeaver 在查询结果区域提供了一个列管理面板用户可以在面板中查看所有列的列表通过勾选框控制列的可见性对列进行固定和排序DataGrip / Idea 作为专业的数据库 IDE在数据网格的列管理交互上相对不够便捷。本插件借鉴 DBeaver 的列管理思路以Tool Window 侧边栏的形式为 DataGrip 提供持久化的列管理能力并额外实现了 DataGrip / idea 原生不具备的列冻结功能。实现思路技术架构插件基于 IntelliJ Platform Plugin SDK 开发使用 Kotlin 编写主要由以下模块组成模块职责ColumnSidebarToolWindowFactory注册右侧 Tool Window创建面板实例ColumnSidebarPanelUI 面板包含搜索框、操作按钮、列 checkbox 列表ColumnFreezeController列冻结控制器通过 JScrollPane RowHeader 机制实现列固定ColumnVisibilityController封装列可见性控制逻辑调用 DataGrid APIDataGridTracker跟踪当前激活的 DataGrid 实例监听切换事件核心实现列冻结Freeze Column通过反射获取 DataGrid 内部的 JTable 和 JScrollPane创建一个只包含冻结列的代理 JTable设置为 JScrollPane 的rowHeaderView。固定表的表头放在UPPER_LEFT_CORNER位置与主表列头对齐。同时监听主表的rowHeight和font属性变化缩放字体时自动同步行高避免行错位。DataGrid 追踪通过订阅DataGrid.ACTIVE_GRID_CHANGED_TOPIC消息总线事件实时感知用户切换到哪个数据网格。同时使用定时轮询作为兜底方案确保数据加载完成后能正确刷新列列表。列可见性控制使用 DataGrid 的setColumnEnabled/isColumnEnabledAPI 控制列的显隐通过ModelIndex.forColumn()构建列索引。已固定的列不允许隐藏需先取消固定。列定位滚动通过反射获取 DataGrid 内部的 JTable 实例调用scrollRectToVisible()和单元格选中 API实现点击按钮后自动滚动到目标列。搜索过滤基于列名的实时模糊搜索输入关键字后动态过滤 checkbox 列表中的显示项。目前已实现的功能列冻结固定列每列右侧有一个固定按钮◇/◆点击后将该列固定到数据网格最左侧水平滚动时始终可见。支持同时固定多列。缩放字体时自动同步行高确保固定列与主表行对齐。已固定的列不允许被隐藏需先取消固定。清除所有固定按钮栏提供「清除固定」按钮一键取消所有已固定的列。列显隐控制通过 checkbox 勾选/取消勾选即时切换数据网格中对应列的显示状态。列搜索过滤顶部搜索框支持按列名关键字实时过滤适用于字段数量较多的表。搜索框右侧有清除按钮可快速重置搜索条件。全选 / 取消全选一键切换当前所有可见列的选中状态。按钮文字会根据当前状态自动切换为「全选」或「取消全选」。全选/取消全选操作会自动跳过固定列。反选将当前所有列的选中状态取反适用于「只想看某几列」的场景。反选操作会自动跳过固定列。列定位每行右侧有一个「→」按钮点击后自动将数据网格滚动到对应列并选中该列的单元格。隐藏列的定位按钮会自动置灰禁用。自动跟踪 DataGrid 切换当用户在不同的查询 tab 之间切换时侧边栏会自动刷新为当前激活的数据网格的列列表。使用方式安装插件后DataGrip: 通过菜单View → Tool Windows → Column Sidebar打开侧边栏IDEA点击数据库结果集工具栏上的Toggle Column Sidebar按钮面板默认关闭切到代码页时自动关闭。在 DataGrip 中打开已加载数据的查询结果侧边栏会自动展示列列表若数据未加载按 CtrlF5 刷新后自动展示点击 ◇ 按钮固定关键列到左侧水平滚动时始终可见通过勾选框、搜索、全选/反选等操作管理列的显隐兼容性支持 DataGrip 2023.2 及以上版本sinceBuild 232支持到 DataGrip 2026.2untilBuild 262.*基于 JDK 17 编译项目信息插件 IDcom.cong.datagrip-column-sidebar开发语言Kotlin构建工具Gradle IntelliJ Platform Gradle Plugin 2.2.0源码仓库https://gitee.com/tuboshu618/datagrip_column_show_plugin