Перейти к основному содержимому

Шаблонизация данных в компоненте DataGrid

Формулировка задачи

Настроить содержимое ячеек в компоненте DataGrid для отображения в ячейке:

  • кнопки вместо текста;
  • поля ввода;
  • флажка;
  • значения в отформатированном виде.

Также в компоненте DataGrid необходимо изменить цвет фона строки.

Предварительные требования

Создана экранная форма, на которую добавлен компонент DataGrid.

Рекомендуемое решение задачи

Рекомендуемый подход к решению описанной задачи включает следующие шаги:

  1. Настройка чередования цвета фона строк таблицы в зависимости от четности сроки.

    1. Выберите ячейку.

    2. Выберите свойство Background компонента Group.

    3. Укажите в качестве значения свойства Background функцию проверки четности строки, как показано в следующем фрагменте кода:

      Background={(i) => {
      return i % 2 ? "GRAY_2" : "GRAY_1";
      }}
      подсказка

      Имя переменной i можно переопределить с помощью свойства ItemIndexVariable компонента DataGrid.

  2. Добавление компонента Icon в ячейку таблицы.

    1. Выберите ячейку и удалите текст.

    2. Добавьте в ячейку компонент Group.

    3. Добавьте в компонент Group компонент Icon.

    4. Определите значение свойства Name компонента Icon с помощью переменной item, как показано в следующем фрагменте кода:

      <Icon
      Name-var="item.status"
      />
      подсказка

      Имя переменной item можно переопределить с помощью свойства ItemAlias компонента DataGrid.

  3. Добавление компонента Checkbox в ячейку таблицы.

    1. Выберите ячейку и удалите текст.

    2. Добавьте в ячейку компонент Group.

    3. Добавьте в компонент Group компонент Checkbox.

    4. Определите значение свойства Model компонента Checkbox с помощью переменной item, как показано в следующем фрагменте кода:

      <Checkbox 
      Model-var="item.booleanField" Label=""
      />
  4. Форматирование текста в ячейке по заданным правилам.

    Для форматирования текста в ячейке, например, для отображения вместо фамилии, имени и отчества в столбце только фамилии и инициалов сделайте следующее:

    1. Выберите ячейку.

    2. Определите значение свойства Value компонента Text с помощью функции, возвращающей отформатированное значение, как показано в следующем фрагменте кода:

      <Text
      Value={(item) => {
      return `${item.manager.sirname} ${item.manager.name.charAt(0)}. ${item.manager.middleName.charAt(0)}.`;
      }}
      />
  5. Добавление компонента Button в ячейку таблицы.

    1. Выберите ячейку и удалите текст.

    2. Добавьте в ячейку компонент Group.

    3. Добавьте в компонент Group компонент Button.

    4. Опишите обработчик события OnClick() компонента Button, как показано в следующем фрагменте кода:

      <Button
      OnClick={(item) => { console.log('Current item data: ', item); }}
      />
      подсказка

      Переменные item и i также доступны в обработчике события OnClick() с помощью метода getValue().

  6. Размещение в ячейке текстового поля ввода, имеющего по умолчанию значение из ячейки таблицы.

    1. Выберите ячейку и удалите текст.

    2. Добавьте в ячейку компонент Group.

    3. Добавьте в компонент Group компонент Input.

    4. Определите значение свойства Model компонента Input с помощью переменной item, как показано в следующем фрагменте кода:

      <Input
      Model-var="item"
      />
  7. Форматирование даты в ячейке таблицы.

    1. Выберите ячейку.

    2. Определите значение свойства Value компонента Text с помощью функции, возвращающей отформатированное значение даты, как показано в следующем фрагменте кода:

      <Text
      Value={ (date = item.dateColumn) => new Date(date).toLocaleDateString(); }
      />
  8. Размещение в ячейке текстового поля ввода, имеющего по умолчанию значение из ячейки таблицы.

    1. Выберите ячейку и удалите текст.

    2. Добавьте в ячейку компонент Group.

    3. Добавьте в компонент Group компонент Input.

    4. Определите значение свойства Model компонента Input с помощью переменной item, как показано в следующем фрагменте кода:

      <Input
      Model-var="item"
      />