You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AgGrid Vanilla JS版如何按单元格值条件设置单元格类型?

AgGrid Vanilla JS 单元格级编辑权限与自定义编辑器实现方案

一、控制单个单元格的可编辑状态

不用依赖columnTypes API,直接在ThingType列的定义里给editable字段传一个回调函数,根据单元格当前值判断是否允许编辑:

const columnDefs = [
  {
    headerName: 'ThingType',
    field: 'thingType',
    // 仅当值为plane时允许编辑,car/bike设为不可编辑
    editable: (params) => params.value === 'plane'
  }
];

二、为plane单元格配置带自动补全的自定义编辑器

  1. 先实现一个自定义的自动补全编辑器组件(以原生input+datalist为例):
class AutocompleteEditor {
  init(params) {
    // 创建输入框
    this.inputEl = document.createElement('input');
    // 关联datalist实现自动补全
    this.inputEl.setAttribute('list', 'thingTypeAutoComplete');
    
    // 创建补全选项列表
    const datalist = document.createElement('datalist');
    datalist.id = 'thingTypeAutoComplete';
    // 这里可以自定义补全选项
    ['plane', 'jet', 'helicopter'].forEach(opt => {
      const option = document.createElement('option');
      option.value = opt;
      datalist.appendChild(option);
    });
    document.body.appendChild(datalist);
    
    // 初始化输入框值
    this.inputEl.value = params.value;
  }

  getGui() {
    return this.inputEl;
  }

  getValue() {
    return this.inputEl.value;
  }

  destroy() {
    // 清理创建的datalist
    document.getElementById('thingTypeAutoComplete')?.remove();
  }
}
  1. 在列定义里配置动态编辑器,仅当单元格值为plane时启用自定义编辑器:
const columnDefs = [
  {
    headerName: 'ThingType',
    field: 'thingType',
    editable: (params) => params.value === 'plane',
    // 动态指定编辑器
    cellEditor: (params) => params.value === 'plane' ? 'autocompleteEditor' : undefined
  }
];

// 注册自定义编辑器到AgGrid
const gridOptions = {
  columnDefs: columnDefs,
  frameworkComponents: {
    autocompleteEditor: AutocompleteEditor
  },
  // 其他grid配置...
};

三、关于cellRenderer与columnTypes的说明

  • columnTypes是用来批量复用列配置的模板,比如把多个列共用的属性(如宽度、排序规则)打包成一个type,多个列直接引用即可,和单元格级的编辑控制无关。
  • cellRenderer仅负责单元格的显示样式,和编辑功能是完全独立的模块,你要实现的编辑逻辑不需要修改cellRenderer。

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:51:04