Выбрать со значениями и идентификаторами внутри ячейки ag-grid?
Я очень новичок в ag-grid и оцениваю его.
Данные моего проекта имеют несколько таблиц поиска (например, у Foo есть категория Bar, Brand of Baz и Class of Boo), которые я хотел бы иметь возможность редактировать в ag-grid. К сожалению, эти таблицы поиска не находятся под моим контролем, и у меня не всегда есть последовательные идентификаторы.
Пример:
У фу есть класс
Класс может быть одним из следующих:
- ID - значение
- 2 - Тест
- 3 - UAT
- 6 - неизвестно
- 9 - Производство
- 15 - Разработка
Я не могу контролировать идентификаторы или ценности.
Так что, если я добавлю agSelectCellEditor, могу ли я как-то сказать ему отображать значения, но собирать идентификаторы?
Кто-то еще получил лучшее представление о том, как я могу собрать класс, бренд и т. Д.?
ETA:
С сайта ag-grid ( https://www.ag-grid.com/javascript-grid-cell-editing/):
colDef.cellEditor = 'agSelectCellEditor';
colDef.cellEditorParams = {
values: ['English', 'Spanish', 'French', 'Portuguese', '(other)']
}
Это то, что я пробовал, но я не могу вернуть идентификаторы сюда. Может быть, у кого-то есть идея получше или она реализовала это раньше.
Спасибо за помощь новичку ag-grid.
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
}
]
}
}
Полный пример здесь