【ag-grid-vue】列定义(Updating Column Definitions)

文章介绍了如何在Vue应用中使用Ag-Grid组件管理和更新列定义,包括添加、删除列,以及区分初始状态和状态属性的使用。示例代码展示了如何通过按钮操作切换列的包含与排除,并演示了如何使用columnDefs和defaultColDef配置列的显示和行为。
摘要由CSDN通过智能技术生成

列定义一节解释了如何配置列。可以在初始设置列之后更改列的配置。本节介绍如何更新列定义。

添加和删除列

可以通过更新提供给网格的列定义列表来添加和删除列。当设置新列时,网格将与当前列进行比较,并计算出哪些列是旧的(要删除)、哪些列是新的(创建的新列)或保留的。下面的示例演示从网格中添加和删除列。

注意事项如下:

  • 选择按钮以在包括或排除奖章列之间切换 

 示例

<template>
  <div>
    <div class="operate">
      <button @click="onBtExcludeMedalColumns">onBtExcludeMedalColumns</button>
      <button @click="onBtIncludeMedalColumns">onBtIncludeMedalColumns</button>
    </div>
    <ag-grid-vue
      style="height: 500px; width: 100%"
      class="ag-theme-alpine"
      :columnDefs="columnDefs"
      :defaultColDef="defaultColDef"
      :rowData="rowData"
      @grid-ready="onGridReady"
    ></ag-grid-vue>
  </div>
</template>

<script>
import { AgGridVue } from "ag-grid-vue";
const colDefsMedalsIncluded = [
  { field: "athlete" },
  { field: "gold" },
  { field: "silver" },
  { field: "bronze" },
  { field: "total" },
  { field: "age" },
  { field: "country" },
  { field: "sport" },
  { field: "year" },
  { field: "date" },
];
const colDefsMedalsExcluded = [
  { field: "athlete" },
  { field: "age" },
  { field: "country" },
  { field: "sport" },
  { field: "year" },
  { field: "date" },
];
export default {
  name: "UpdatingColumn",
  components: {
    AgGridVue,
  },
  data() {
    return {
      columnDefs: colDefsMedalsIncluded,
      gridApi: null,
      columnApi: null,
      defaultColDef: {
        initialWidth: 100,
        sortable: true,
        resizable: true,
      },
      rowData: null,
    };
  },
  methods: {
    onBtExcludeMedalColumns() {
      this.gridApi.setColumnDefs(colDefsMedalsExcluded);
    },
    onBtIncludeMedalColumns() {
      this.gridApi.setColumnDefs(colDefsMedalsIncluded);
    },
    onGridReady(params) {
      this.gridApi = params.api;
      this.gridColumnApi = params.columnApi;

      const updateData = (data) => {
        this.onBtIncludeMedalColumns();
        this.rowData = data;
      };
      fetch("https://www.ag-grid.com/example-assets/olympic-winners.json")
        .then((resp) => resp.json())
        .then((data) => updateData(data));
    },
  },
};
</script>

<style lang="less" scoped></style>

初始状态

点击按钮 onBtExcludeMedalColumns

 

更新列定义

可以更新列定义的所有属性。例如,如果要更改列的Header Name,则更新列定义上的headerName,然后再次将列定义列表设置到网格中。

不可能单独更新一个列的列定义。只能应用一组新的列定义。

下面的示例演示更新列定义以更改列的配置方式。注意事项如下:

  • 所有列都只提供列定义上设置的字段属性。
  • “Set Header Names”和“Remove Header Names”设置并随后删除所有列的headerName属性。
  • “Set Value Formatter”和“Remove Value Formatter”设置并随后删除所有列上的valueFormatter属性。
  • 请注意,在更新列定义之间,列的任何调整大小、排序等都保持不变。

示例

现有列的列名是这样的

columnDefs= [
{ field: 'athlete' },{ field: 'age' },{ field: 'country' },
{ field: 'sport' },{ field: 'year' },{ field: 'date' },
{ field: 'gold' },{ field: 'silver' },{ field: 'bronze' },
{ field: 'total' }
]

 我们希望触发某个操作后列名变成这样的

 思路

在每个列定义中这样一个属性 headerName 设置了这个属性后列名的展示以它为主,

不设置该属性则以field为主(此时field即作为列的映射又做为列展示的名称)

 this.gridApi.setColumnDefs(this.columnDefs);
setHeaderNames() {
     this.columnDefs.forEach(function (colDef, index) {
        colDef.headerName = 'C' + index;
     });
     this.gridApi.setColumnDefs(this.columnDefs);
}

  参考地址 https://www.ag-grid.com/javascript-data-grid/column-updating-definitions/

 更改列状态

列定义的部分表示列状态。Column State是有状态信息,表示网格的变化值。

列定义的所有状态属性如下:

Stateful AttributeInitial AttributeDescription
widthinitialWidth列的宽度
flexinitialFlex用于设置此列宽度的伸缩值
hideinitialHide是否应该隐藏这一列
pinnedinitialPinned这列是否应该固定
sortinitialSort列的排序
sortIndexinitialSortIndex按顺序应用排序,如果是多列排序
rowGroupinitialRowGroup该列是否应该是行组
rowGroupIndexinitialRowGroupIndex该列是否应该是行组,以及以什么顺序。
pivotinitialPivot如果这一列是主列
pivotIndexinitialPivotIndex这一列是否应该是主列,以什么顺序
aggFuncinitialAggFunc通过行分组或透视聚合此列的函数。

初始属性仅在创建列时使用。有状态属性将在创建或更新列时使用。

columnDefs: [
    // using initial values, get applied when Column is created
    { field: 'country', initialWidth: 200, initialPinned: 'left' },
    // using stateful values, get applied when Column is created or updated
    { field: 'country', width: 200, pinned: 'left' }
],

下面的示例显示了使用初始属性的列定义。注意事项如下:

  • initialWidth、initialSort和initialPinned仅在创建列时应用。
  • 如果你通过与网格的UI交互来更新列的宽度、排序或固定,然后点击“Set Columns with Initials”,列的状态不会改变。
  • 首先删除列,然后再次设置它们将再次使用初始值。

 参考地址 https://www.ag-grid.com/javascript-data-grid/column-updating-definitions/

下面的示例显示了使用有状态属性的列定义。注意事项如下:

每当设置列定义时,将应用宽度、排序和固定状态属性。
如果你通过与网格的UI交互来更新列的宽度、排序或固定,然后点击“Set Columns with State”,列的状态将会改变,通过UI所做的更改将会丢失。
注意defaultColDef是用来移除状态的。例如,设置sort=null,以便清除用户可能在另一列上执行的任何排序。否则,网格将看到sort属性为未定义,这意味着不应该更改状态。

  

  参考地址 https://www.ag-grid.com/javascript-data-grid/column-updating-definitions/

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 在 ag-grid-vue 中,你可以通过设置 columnDefs 中的 cellStyle 属性来更改某一的字体颜色。例如: ``` columnDefs: [ { headerName: 'Column 1', field: 'col1', cellStyle: {color: 'red'} } ] ``` 这样,在网格中的 Column 1 中的所有单元格的字体颜色都将被设置为红色。 你还可以使用 JavaScript 表达式来动态设置字体颜色,例如: ``` cellStyle: function(params) { if (params.value > 0) { return {color: 'green'}; } else if (params.value < 0) { return {color: 'red'}; } else { return null; } } ``` 在这种情况下,当单元格的值大于 0 时,字体颜色将被设置为绿色;当单元格的值小于 0 时,字体颜色将被设置为红色;否则字体颜色不会被更改。 ### 回答2: 在使用ag-grid-vue时,要更改某一的字体颜色,可以通过自定义单元格渲染器(cellRenderer)来实现。 首先,我们需要在定义columnDefs)中为目标添加一个指定的字段,例如"color"。然后,我们可以定义一个自定义的单元格渲染器函数,用来根据该字段的值设置字体颜色。 在创建自定义的单元格渲染器函数时,可以使用Vue的渲染函数来生成所需的HTML元素,并通过CSS样式来设置字体颜色。例如,可以创建一个函数,判断"color"字段的值,如果是"red"则设置字体为红色,如果是"green"则设置为绿色,以此类推。 最后,将这个自定义的单元格渲染器函数应用到目标的"cellRenderer"属性上即可。确保将相关的定义作为属性传递给ag-grid-vue组件,以便执行所需的渲染。 需要注意的是,这只是其中的一种实现方式,具体可根据需求进行调整。同时,确保在Vue组件中导入所需的相关库和样式文件,以及正确配置和使用ag-grid-vue组件。 总结起来,为了更改某一的字体颜色,我们需要以下几个步骤: 1. 在定义中为目标添加一个字段,例如"color"。 2. 定义一个自定义的单元格渲染器函数,根据"color"字段的值设置字体颜色。 3. 将自定义的单元格渲染器函数应用到目标的"cellRenderer"属性上。 4. 确保所需的库和样式文件导入,并正确配置和使用ag-grid-vue组件。 这样就可以实现对ag-grid-vue中某一的字体颜色的更改。 ### 回答3: 要更改ag-grid-vue中某一的字体颜色,可以使用`cellStyle`属性和单元格样式函数。首先,在表格的定义中,找到要更改字体颜色的。在该定义对象中添加一个`cellStyle`属性,并将其值设置为一个函数。 例如,假设我们要更改第二的字体颜色,可以这样做: ```javascript { headerName: '姓名', field: 'name' }, { headerName: '年龄', field: 'age', cellStyle: function(params) { // 在这里可以根据特定条件返回不同的字体颜色 if (params.value > 30) { return { color: 'red' }; // 返回红色字体 } else { return { color: 'black' }; // 返回黑色字体 } } }, { headerName: '国籍', field: 'nationality' }, ... ``` 在`cellStyle`函数中,我们可以根据需要的条件通过检查`params`对象中的`value`属性来选择要返回的样式。在这个例子中,如果`age`大于30,我们将返回一个具有红色字体的样式对象,否则将返回一个具有黑色字体的样式对象。 然后,将这个定义对象添加到表格的定义数组中,传递给ag-grid-vue组件作为属性。 这样,当表格呈现时,第二的字体颜色将根据我们在`cellStyle`函数中定义的条件进行改变。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好喝的西北风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值