如何跳过应用到 ag-grid 组件的具体化 css 文件

Posted

技术标签:

【中文标题】如何跳过应用到 ag-grid 组件的具体化 css 文件【英文标题】:How to skip materialize css file getting applied to ag-grid components 【发布时间】:2021-02-01 19:38:35 【问题描述】:

我有一个 .cshtml 文件,其中包含 search/upload/download/save 按钮,这些按钮使用 materialize.min.css 来设置这些按钮的样式,并在同一页面中使用 ag-grid 来显示上传的网格中的文件数据。 因此,该页面同时引用了 materialize.min.css 和 ag-grids javascript 社区版文件,即 ag-grid-community.min.js

我想选择 ag-grid 的每一行,然后将其发送到后端进行处理。所以我启用了 ag-grids 列属性checkboxselection。但不幸的是,ag-grid 中的checkbox 不起作用(即无法选中复选框),因为materialize.min.cssCSS 被应用于checkbox 元素而不是ag-grids 复选框CSS

我尝试了以下方法来解决这个问题,但没有任何帮助,

    更改了我页面中 CSS 文件的顺序。 编写了一个单独的 CSS 文件并复制了与 ag-grids 复选框相关的 CSS,并在其每个属性中添加了 !important 标签。 尝试使用 ag-grids cellclass 属性。

根据我的项目结构,我不能为 search/upload/download/save 按钮提供单独的 CSS 文件,因为它是作为单独的框架编写的。

有没有办法绕过materialize.min.css 文件被应用到ag-grid

【问题讨论】:

【参考方案1】:

我最近遇到了同样的问题,受this answer的启发,以下对我有用。

按照上面的链接添加以下 CSS 以撤消 Materialize 格式:

[type="checkbox"].reset-checkbox,
[type="checkbox"].reset-checkbox:checked,
[type="checkbox"].reset-checkbox:not(checked) 
  opacity: 1 !important;
  position: relative !important;
  pointer-events: inherit !important;


[type="checkbox"].reset-checkbox+span::before,
[type="checkbox"].reset-checkbox+span::after,
[type="checkbox"].reset-checkbox:checked+span::before,
[type="checkbox"].reset-checkbox:checked+span::after 
  display: none !important;


[type="checkbox"].reset-checkbox+span:not(.lever) 
  padding-left: 10px !important;
  

将以下内容添加到您的 ag-grid。这会将类添加到所有复选框。它需要在滚动事件上动态调用,因为 ag-grid 使用 DOM 虚拟化。

gridOptions.onBodyScroll = function()
  var inputs = document.querySelectorAll(".ag-checkbox-input");
  for(var i = 0; i < inputs.length; i++) 
    inputs[i].classList.add('reset-checkbox');   
  

【讨论】:

以上是关于如何跳过应用到 ag-grid 组件的具体化 css 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 redux 或组件函数中处理 AG-Grid API 操作?

如何使用 ag-grid 自定义过滤器组件构建查找搜索功能

如何在 ag-grid 的社区版中实现 Master-Detail 组件

ag-Grid:我如何对 ICellRendererAngularComp 进行单元测试

如何在我的 ag-grid 单元格中放置一个 react jsx 组件

Angular & ag-grid:无法使用 frameworkComponents 注册框架组件