Slickgrid:如何将CheckboxSelectColumn从列选择器中排除
解决Slick.CheckboxSelectColumn从列选择器排除的问题
方法一:手动为插件生成的列添加排除配置
Slick.CheckboxSelectColumn插件的构造参数不会自动将excludeFromColumnPicker传递到最终生成的列定义中,需要在初始化插件后手动给列定义补充该属性:
// 初始化复选框列插件 var checkboxSelector = new Slick.CheckboxSelectColumn({ cssClass: "slick-cell-checkboxsel" }); // 给插件生成的列添加排除列选择器的配置 checkboxSelector.columnDefinition.excludeFromColumnPicker = true; // 将该列加入你的列数组 myColumns.unshift(checkboxSelector.getColumnDefinition()); // 初始化表格并注册插件 var grid = new Slick.Grid("#myGrid", data, myColumns, options); grid.registerPlugin(checkboxSelector); // 初始化列选择器 var columnpicker = new Slick.Controls.ColumnPicker(myColumns, grid, options);
方法二:关闭列选择器的自动同步并手动传入过滤后的列
如果过滤列数组后复选框列仍显示,是因为列选择器默认会同步表格的列集合。可以关闭自动同步,强制使用过滤后的列数组:
// 过滤掉复选框列 var columnPickerColumns = myColumns.filter(column => column.id !== "_checkbox_selector"); // 创建列选择器时关闭自动同步,传入过滤后的列 var columnpicker = new Slick.Controls.ColumnPicker(columnPickerColumns, grid, { ...options, syncGridColumnSelection: false }); // 手动触发列选择器刷新 columnpicker.updateColumns(columnPickerColumns);
原理说明
常规列的excludeFromColumnPicker生效是因为列选择器会读取列定义的该属性,但CheckboxSelectColumn插件生成的列不会自动继承构造参数里的配置,因此需要手动补充。若过滤列数组后无效,是因为列选择器默认和表格列集合同步,关闭同步或手动刷新即可解决。
内容的提问来源于stack exchange,提问作者user15036136
相关产品推荐
相关产品推荐

