AG Grid:仅在单元格中居中复选框

Posted

技术标签:

【中文标题】AG Grid:仅在单元格中居中复选框【英文标题】:AG Grid: center checkbox alone in cell 【发布时间】:2021-12-29 19:49:46 【问题描述】:

版本:

vueJS: 3.0.0
bootstrap: 5.0.0-beta3
ag-grid-community: 26.1.0
ag-grid-vue3: 26.1.2

请看下面的截图。在我的columnDefs for ag-grid 中,我为Pending 列指定了checkboxSelection: true。我不希望在该列中呈现任何文本。相反,我希望在每个单元格中都有一个复选框。这可以做到吗?按照现在的情况,复选框在单元格中是左对齐的。

这是Pending 的 columnDef:

 headerName: "Pending", field: "pending", sortable: true, editable: true, checkboxSelection: true, cellStyle: () => getPageStatus() ,

这是列标题的样式:

  .ag-header-cell-label 
    justify-content: center;
  

感谢您的调查。

【问题讨论】:

在检查 DOM 中包含复选框的 ag-grid 单元格后,我能够使用以下样式将复选框居中在 Pending 列标题下:.ag-cell-wrapper justify-content: center; 。但我真的希望在 AG Grid 的文档 API 中找到一种定义明确的方法。 【参考方案1】:

我草拟了一个通用解决方案,它解释了如何在网格单元格中呈现自定义 html 元素。该解决方案的大部分基于现有的文章和博客。请注意这里的数据模型(呈现到网格)假定一个 pending 属性。

    <ag-grid-vue
      class="ag-theme-alpine"
      :frameworkComponents="frameworkComponents"
      :columnDefs="columnDefs"
      :rowData="getRowData"
      rowSelection="multiple"
      domLayout="autoHeight"
      editType="fullRow"
      @grid-ready="onGridReady">
    </ag-grid-vue>

import CheckboxRenderer from '@/components/CheckboxRenderer.vue';

export default 
  data() 
    return 
      frameworkComponents: 
        checkboxRenderer: CheckboxRenderer
      ,
      columnDefs: [
             headerName: "Pending", field: "pending", sortable: true, editable: true,
          cellStyle: () => getPageStatus(), cellRenderer: 'checkboxRenderer', valueGetter: params => params ? null : null ,
      ]
    
  
;

CheckboxRenderer.vue

<template>
  <input ref="eGui" @click="checkedHandler" type="checkbox" v-model="params.data.pending" class="ag-input-field-input ag-checkbox-input" />
</template>

<script>
export default 
  name: "CheckboxRenderer",
  props: 
    params: Object
  ,
  methods: 
    getGui() 
      return this.$refs.eGui;
    ,
    checkedHandler(e) 
      let checked = e.target.checked;
      let colId = this.params.column.colId;
      this.params.node.setDataValue(colId, checked);
    
  ,
;
</script>

<style>
.ag-checkbox-input 
  width: 18px;
  height: 18px;
  vertical-align: middle;

</style>

【讨论】:

以上是关于AG Grid:仅在单元格中居中复选框的主要内容,如果未能解决你的问题,请参考以下文章

Ag-Grid:如何在不选择行的情况下单击行或该行的任何单元格突出显示特定行?

处理 ag grid react 并渲染复选框网格

ag Grid如何在更改复选框的值后刷新

AG-GRID 无法将图标按钮添加到我的 ag-grid 中的 ag-grid 和多选复选框的每一行

如何仅在单击网格中的复选框而不是单击单元格或行时选择复选框在 extjs 3.2

Kendo Grid 始终专注于 Top Row 的第一个单元格