vue2.6 Ag-grid 使用

本文档详细介绍了如何使用ag-grid-vue组件进行数据渲染和交互操作,包括设置HTML结构、配置数据源、监听单元格编辑事件、自定义列宽和固定定位、复选框功能以及单元格编辑和渲染。此外,还展示了如何处理单元格编辑停止时的数据校验和双击事件,以及自定义单元格渲染器实现复杂数据类型的显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中文文档:ag-grid中文教程 - itxst.com

一.HTML 结构

<ag-grid-vue
   class="ag-theme-alpine"
   id="myGrid"
   :rowData="rowData" //数据源
    @cellEditingStopped="onCellEditingStopped" // 输入停止直接执行 数据保存事件
    :gridOptions="gridOptions" //总配置项
  >
    <ag-grid-column
      v-for="item of gridOptions.columnDefs" //遍历配置项里的表头
      :key="item.prop || item.label" //防止 key值重复
      :field="item.field"  //接受的后端字段
      :headerName="item.headerName" //展示名字
      :width="item.width"
      :pinned="item.pinned" //固定定位 左或者右
      :checkboxSelection="item.checkboxSelection" //复选框勾选事件
      :headerCheckboxSelection="item.headerCheckboxSelection" //头部复选框勾选事件
      :singleClickEdit="item.singleClickEdit" //单元格编辑效果
      :cellEditorFramework="item.cellEditorFramework" //自定义组件配置
      :suppressMovable="item.suppressMovable" //单元格拖拽效果
      :cellRenderer="item.cellRenderer && MedalCellRenderer"// 渲染表格数据(输入框 ,下拉框,多 选框) 表格行自定义事件
      :cellClass=" item.cellClass ? item.cellClass == 'Referenceclass'
      ? Referenceclass
      : 'editinitstyle'
      : ''" //样式修改
      :editable="item.editable ? (item.editable == 'scPriceFunction' && scPriceFunction) 
      :false" //编辑权限以及校验
    ></ag-grid-column>
</ag-grid-vue>

二.data()

gridOptions: {
        rowSelection: 'multiple',
        suppressRowClickSelection: true,
        enableCellTextSelection: true,
        onRowClicked: (event) => {
          this.gridOptions.api.forEachNode(function(item, index) {
            if (index == event.rowIndex) {
              item.data.rowselected = true;
              item.setData(item.data);
            } else {
              item.data.rowselected = false;
              item.setData(item.data);
            }
          });
        },
        onCellDoubleClicked: (event) => {
          if (event.colDef.field === 'projectId' && event.data.opportunity.id) {
            路由跳转
          }
        },
        //拖拽列 拖拽到表格外 不会使其隐藏
        suppressDragLeaveHidesColumns: true,
        //拖拽回调
        onColumnMoved: (event) => {
          let list = [];
          list = event.api.columnController.allDisplayedColumns.map((item) => ({
            field: item.colId,
            pinned: item.pinned
          }));
          this.gridOptions.afterColumnDefs = list;
        },
        rowClassRules:{ag-grid注册使用权}
        rowDeselection: false,
        components: {
          medalCellRenderer: this.MedalCellRenderer
        },
        iShowAgGrid: false,
        //展示列
        columnDefs: [],
        //后台传的列的顺序 和 改变后的顺序
        afterColumnDefs: [],
        //所有的列
        beforeColumnDefs: [
          {
            headerName: 'Line Number',
            field: 'lineNumber',
            minwidth:'100',
            pinned: 'left'
          },
        ],

三.js

//单元格停止编辑时机
    onCellEditingStopped(params) {
     // 可以给填写的数据做正则校验
    },
    //判断单价
    scPriceFunction(params) { //根据当前行可以切换是否开启编辑
      if (this.isfalse == true) {
        return true;
      } else {
        return false;
      }
    },
    //渲染表格数据(输入框 ,下拉框,多 选框) 表格行自定义事件
    MedalCellRenderer(params) { //根据后端数据 创建对应DOM 例如 复选框checkbox
      if (params.colDef.field == 'isRecordedRebate') {
        var eDiv129 = document.createElement('div');
        eDiv129.innerHTML = '<input disabled class="check129" type="checkbox" />';
        let check129 = eDiv129.querySelectorAll('.check129')[0];
        if (params.data.isRecordedRebate) {
          check129.checked = 'checked';
        } else {
          check129.checked = '';
        };
        return eDiv129;
      };

<think>好的,用户想了解如何在Vue 3中集成和使用ag-Grid。首先,我需要回忆一下ag-Grid的官方文档Vue 3的相关特性。 首先,用户可能需要知道如何安装ag-Grid及其Vue组件。应该需要安装`ag-grid-vue3`和核心库`ag-grid-community`。然后,在Vue项目中导入必要的组件和样式。 接下来,用户可能需要一个基本的示例来展示如何在组件中配置ag-Grid。需要说明如何定义列和行数据,以及如何在模板中使用`ag-grid-vue`组件。同时,需要提到样式文件的引入,因为ag-Grid的外观依赖于这些样式。 另外,用户可能对高级功能感兴趣,比如使用企业版功能或者配置表格属性,例如分页、排序和过滤。需要简要说明如何启用这些功能,并指出企业版需要额外的许可证。 最后,常见问题部分可以帮助用户解决可能遇到的典型问题,比如样式缺失、数据更新和性能优化。需要强调按需导入组件和使用响应式数据的重要性。 需要确保回答结构清晰,步骤明确,代码示例正确,并且覆盖用户可能需要的各个方面。同时,检查是否需要引用任何资源或文档,但用户提供的引用似乎没有相关内容,所以主要依赖官方文档的知识。</think>### 在 Vue 3 中集成 ag-Grid 的完整指南 #### 1. 安装依赖 ```bash npm install ag-grid-community ag-grid-vue3 # 若需企业版功能 npm install ag-grid-enterprise ``` #### 2. 基础配置 ```vue <script setup> import { ref } from 'vue'; import { AgGridVue } from 'ag-grid-vue3'; import 'ag-grid-community/styles/ag-grid.css'; import 'ag-grid-community/styles/ag-theme-alpine.css'; const columnDefs = ref([ { field: 'name', headerName: '姓名', sortable: true }, { field: 'age', headerName: '年龄', filter: true } ]); const rowData = ref([ { name: '张三', age: 28 }, { name: '李四', age: 35 } ]); </script> <template> <div class="ag-theme-alpine" style="height: 500px"> <ag-grid-vue :columnDefs="columnDefs" :rowData="rowData" /> </div> </template> ``` #### 3. 核心功能配置 ```javascript // 启用分页 :gridOptions="{ pagination: true, paginationPageSize: 20 }" // 启用行选择 :rowSelection="'multiple'" // 自定义单元格渲染 { field: 'status', cellRenderer: (params) => `<span class="badge">${params.value}</span>` } ``` #### 4. 企业版功能(需授权) ```javascript import 'ag-grid-enterprise'; // 使用分组功能 :groupHeaderHeight="50" :rowGroupPanelShow="'always'" ``` #### 5. 最佳实践 1. **按需导入模块**(减少打包体积): ```javascript import { ClientSideRowModelModule } from 'ag-grid-community'; :modules="[ClientSideRowModelModule]" ``` 2. **响应式数据更新**: ```javascript // 使用 Vue 的响应式系统 const updateData = () => { rowData.value = fetchNewData(); } ``` 3. **主题定制**: ```css .ag-theme-alpine { --ag-foreground-color: #2c3e50; --ag-secondary-foreground-color: #34495e; } ``` ### 常见问题解决 1. **样式缺失**:确保导入 CSS 文件路径正确 2. **数据不更新**:使用响应式 API(ref/reactive) 3. **性能优化**:启用`domLayout='autoHeight'`或虚拟滚动 官方推荐配置示例:[ag-grid-vue3 文档](https://www.ag-grid.com/vue-data-grid/)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值