如何在不丢失syncfusion提供的搜索功能的情况下创建自定义syncfusion网格列?

时间:2019-04-25 11:06:26

标签: typescript angular7 syncfusion

我需要映射从后端接收的数据,例如数字类型的用户状态,并将该数字映射到字符串。

我可以用打字稿来做,但是后来我失去了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到后端的接收状态?创建我的自定义列无效。我丢失了该自定义列的过滤条件。

感谢您的帮助。

2 个答案:

答案 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”。您可以通过两种方式实现您的要求

  1. QueryCellInfo事​​件
  2. 外键列。

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

如果您有任何疑问,请告诉我们。