【发布时间】:2021-05-04 06:51:21
【问题描述】:
我正在尝试使用 bootstrap-table 并给它一种“Excel 感觉”。可以选择根据里面的值快速过滤列。但我似乎无法让它与粘性标题一起使用,粘性标题有一个引导表插件(data-sticky-header="true")。
我尝试使用 bootstrap 5 下拉菜单创建一些内容并将其附加到标题,效果很好,但是当粘性标题被激活时(将标题滚动到视图之外以便它启动),过滤器和下拉菜单停止工作。
这是example,您可以看到它工作正常,直到您尝试向下滚动。
也许有人有解决方案或选项来使用自定义的粘性标题?
编辑:
随后T J answer 更改溢出,它修复了下拉菜单不会显示在粘性标题上的问题。 出现过滤器无法应用的问题,我通过更改修复了它:
const checkboxList = document
.querySelector("#departmentDropdownMenu")
.querySelectorAll("input");
到:
const dropdownUL = cb.parentElement.parentElement.parentElement;
const checkboxList = dropdownUL.querySelectorAll("input");
但是现在我遇到的一个问题是,当我滚动时,此过滤器会应用一次,但是如果我再次单击下拉菜单,它会“重置”到它开始时的状态(当我滚动过去它的入口点时) .它更改了过滤器,但在视图中,它似乎每次都“重置”到该位置。如果在我开始滚动时在那里检查了某些内容,则每次下拉菜单再次打开时都会出现检查。 我对此example进行了更新
【问题讨论】:
-
您的问题是重新打开时复选框保持选中状态吗?是否要重置选择?我真的不明白它是如何工作的......
-
@TJ 我的目标是复选框将保持不变,并且在我重新打开下拉菜单时不会重置。因为现在它们并不能反映过滤器的真实状态。如果我在粘性激活之前选中其中一个复选框,然后向下滚动并取消选中它,将应用过滤器,但如果我关闭下拉菜单并再次打开它,它将显示此框已选中
-
filterAlgorithm: clearFilter ? () => true : (row, filters) => filters[row._department_data.department],这会影响复选框状态吗?你在哪里找到这些回调的文档,我找不到它 -
@TJ 它来自引导表文档。它不会影响复选框的状态。我应该在那里包含一点评论,这部分的作用是我指定引导表过滤基于的函数,这个过滤器需要返回 true 或 false。因此,如果 clearFilter 为真,则意味着所有表行都应返回真。如果 clearFilter 为 false 则表示它确实需要过滤,则功能是检查该部门的 object/dict 的状态。
-
某些东西在滚动后重置复选框的状态,我想知道它是什么
标签: javascript html css twitter-bootstrap bootstrap-table