我需要映射从后端接收的数据,例如数字类型的用户状态,并将该数字映射到字符串。
我可以用打字稿来做,但是后来我失去了syncfusion提供的过滤选项。 我曾想过要在显示数据之前先捕获数据,然后将它们映射然后再显示,但是我不确定如何做到这一点。
在user.component.html
中<ej-grid id="Grid" #grid [dataSource]="datasource.infos" allowPaging="true"
allowFiltering="true">
<e-columns>
<e-column field="status" headerText="Status"></e-column>
</e-columns>
</ej-grid>
在user.component.ts
status = {
0:"None"
}
items: object;
ngOnInit() {
this.data.getUser().subscribe(data => {
this.datasource.infos.push(data)
this.items = this.datasource.infos;
})
}
在datasource.ts
infos: object[] = []
在不丢失过滤选项的情况下,如何映射从数字0到后端的接收状态?创建我的自定义列无效。我丢失了该自定义列的过滤条件。
感谢您的帮助。
答案 0 :(得分:0)
我怀疑您已基于特定的列数据源更改了Grid列单元格的值,并且想要对该列应用过滤操作。对于更改单元格值,建议使用 valueAccessor Grid属性,对于过滤器操作,建议对特定列使用自定义过滤器。您可以使用网格的 filterbarTemplate 功能轻松地为该特定列应用自定义过滤器。请找到以下示例以供参考。
https://stackblitz.com/edit/6rckem?file=index.ts
文档链接:
https://ej2.syncfusion.com/documentation/grid/filtering/#filter-bar-template-with-custom-component
https://ej2.syncfusion.com/documentation/grid/columns/#valueaccessor
答案 1 :(得分:0)
我怀疑您需要在ejGrid中将值0的文本显示为“ none”。您可以通过两种方式实现您的要求
QueryCellInfo事件:
queryCellInfo事件将为一行中的每个单元格触发。使用此事件,您可以将值更改为none。但这仅用于显示目的。在dataSource中,该列的值为0。在过滤时,您也不能不使用任何文本来过滤值。
请参阅API文档以供参考。
https://help.syncfusion.com/api/js/ejgrid#events:querycellinfo
外键列:
在ejGrid中,我们提供了对Foreignkey列的支持,用户可以在其中将dataSource单独绑定到该列。该列的值将采用文本和值对的形式。 (即)一个文本将在视图中显示,并且将其相应的值用于所有其他目的。因此,我建议您使用外键支持来实现您的要求。
请参阅我们的UG文档以供您参考
https://help.syncfusion.com/angular/grid/columns#foreign-key-column
如果您有任何疑问,请告诉我们。