【问题标题】:Select with values and IDs inside an ag-grid cell?在 ag-grid 单元格内选择值和 ID?
【发布时间】:2019-07-29 14:13:51
【问题描述】:

我对 ag-grid 非常陌生,正在评估它。

我的项目数据有多个查找表(即 A Foo 有一个 Bar 类别、一个 Baz 品牌和一个 Boo 类),我希望能够在 ag-grid 中进行编辑。不幸的是,这些查找表不在我的控制范围内,而且我并不总是有顺序 ID。

例子:

Foo 有一个类

类可以是以下之一:

  • ID - 值
  • 2 - 测试
  • 3 - UAT
  • 6 - 未知
  • 9 - 生产
  • 15 - 开发

我无法控制 ID 或值。

如果我放入 agSelectCellEditor,我可以告诉它显示值,但收集 ID 吗?

其他人对我如何收集职业、品牌等有更好的了解吗?

预计到达时间:

来自 ag-grid 网站 (https://www.ag-grid.com/javascript-grid-cell-editing/#agselectcelleditor-agpopupselectcelleditor):

colDef.cellEditor = 'agSelectCellEditor';
colDef.cellEditorParams = {
    values: ['English', 'Spanish', 'French', 'Portuguese', '(other)']
}

这是我尝试过的,但我无法在此处取回 ID。也许其他人有更好的想法或之前已经实现过。

感谢您帮助 ag-grid 菜鸟。

【问题讨论】:

  • 请分享您尝试或实现的示例代码
  • 我没有尝试太多——正如我所说,我正在评估产品。 Ag-grid 声称它们支持 agSelectCellEditor,但它们不显示值和 ID。不幸的是,公司“支持”只链接到这里,而不是他们。
  • 您是否正在尝试访问网格数据?? ID表示键值???键值只不过是 columnDefinitions

标签: javascript ag-grid ag-grid-valuesetter


【解决方案1】:

您可以通过创建自定义单元格编辑器来做到这一点。

组件:

drop.down.editor.ts

import {AfterViewInit, Component, ViewChild, ViewContainerRef} from "@angular/core";

import {ICellEditorAngularComp} from "ag-grid-angular";

@Component({
    selector: 'dropdown-cell-editor',
    templateUrl: "drop.down.editor.html"
})
export class DropDownEditor implements ICellEditorAngularComp, AfterViewInit {
    private params: any;
    public value: number;
    private options: any;

    @ViewChild('input', {read: ViewContainerRef}) public input;


    agInit(params: any): void {
        this.params = params;
        this.value = this.params.value;
        this.options = params.options;

    }

    getValue(): any {
        return this.value;
    }

    ngAfterViewInit() {
        window.setTimeout(() => {
            this.input.element.nativeElement.focus();
        })
    }

}

drop.down.editor.html

 <select  #input  [(ngModel)]="value">
   <option *ngFor="let item of options" value="{{item.value}}">{{item.name}}</option>
  </select>

然后添加模块声明

@NgModule({
  imports:      [ ... , AgGridModule.withComponents( [DropDownEditor]) ],
  declarations: [ ..., DropDownEditor ]
})

然后在列定义中使用它

{
    headerName: "Drop down",
    field: "dropdown",
    cellEditorFramework: DropDownEditor,
    editable: true,
    cellEditorParams: {
        options: [{
                name: "First Option",
                value: 1
            },
            {
                name: "Second Option",
                value: 2
            }
        ]
    }
}

完整示例here

【讨论】:

  • 目前,下拉菜单隐藏一次,选择了一个项目并解析值(不是名称),因为我们在 getValue() 中返回 this.value。但是如何修复下拉菜单?含义下拉菜单应始终在单元格中保持可见,无论该项目是否被选中。
  • 这里是另一个 AG-Grid 菜鸟,对此感到抱歉。如果我理解正确,上面的例子是 Angular 的,对吧?它可以转换为普通的 Javascript 吗? (对不起,我也是 javascript 的新手,我不能在我正在做的项目中使用 Angular)
  • @Pierre 是的,可以用纯 javascript 重写它,您可以查看文档中的示例,其中包含 js 中的自定义单元格编辑器
猜你喜欢
  • 1970-01-01
  • 2018-07-01
  • 2019-02-15
  • 2020-10-11
  • 2023-01-26
  • 2018-11-24
  • 2017-08-31
  • 2019-05-13
  • 2017-09-14
相关资源
最近更新 更多