Как создать пользовательские столбцы сетки syncfusion без потери функции поиска, предоставляемой syncfusion? - PullRequest
0 голосов
/ 25 апреля 2019

Мне нужно отобразить данные, получаемые из серверной части, например, например, статус пользователя с типом number и сопоставить число со строкой.

Я мог бы сделать это с машинописью, но затем я потерял быопция фильтрации, предоставляемая 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>

У пользователя.component.ts

  status = {
       0:"None"
       }

  items: object;
     ngOnInit() {
       this.data.getUser().subscribe(data => { 
         this.datasource.infos.push(data) 
          this.items = this.datasource.infos;
        })
      }

In datasource.ts

infos: object[] = []

Как сопоставить статус, получаемый из бэкэнда, с номером 0 со строкой «нет»"без потери опции фильтрации?Создание моего пользовательского столбца не сработало.Я потерял фильтрацию для этого пользовательского столбца ..

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Я подозреваю, что вам нужно отобразить текст как «none» для значения 0 в ejGrid. Вы можете выполнить ваши требования, используя два способа

  1. Событие QueryCellInfo
  2. Иностранный столбец.

Событие QueryCellInfo:

Событие queryCellInfo будет запускаться для каждой ячейки в строке. Используя это событие, вы можете изменить значение как none. Но это будет использоваться только для отображения цели. В dataSource значение будет 0 для этого столбца. Во время фильтрации вы также не можете фильтровать значение, не используя текст.

Обратитесь к документации API для ознакомления.

https://help.syncfusion.com/api/js/ejgrid#events:querycellinfo

Столбец внешней клавиши:

В ejGrid мы предоставили поддержку столбца Foreignkey, где пользователь может привязывать источник данных отдельно к столбцу. Значения для этого столбца будут иметь форму текста и пары значений . (т. е.) один текст будет показан в поле зрения, и его соответствующее значение будет доступно для всех других целей. Поэтому я предлагаю вам выполнить ваши требования, используя поддержку Foreignkey.

См. Нашу документацию UG для справки

https://help.syncfusion.com/angular/grid/columns#foreign-key-column

Пожалуйста, дайте нам знать, если у вас есть какие-либо вопросы.

0 голосов
/ 27 апреля 2019

Я подозреваю, что вы изменили значение ячейки столбца таблицы в зависимости от конкретного источника данных столбца и хотите применить действие фильтра для этого столбца. Для изменения значения ячейки я предлагаю 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

...