Вопрос:

Есть ли способ добавить несколько классов, используя метод рендерера?

handsontable

543 просмотра

1 ответ

726 Репутация автора

Я пытаюсь создать довольно сложный на вид стол, и я играю с различными функциями из рук в руки.

Одна вещь, которую я надеялся достичь - это присвоить ячейке классы diff для стилизации. Поэтому я использую рендеры для различных сценариев. Дело в том, что когда я присваиваю новый класс ячейке, это похоже на его рендеринг в первый раз.

Пример:

const cellClasses = (row, col, prop) => {
const cellProperties = {};
if (col === 2 || col === 8 || col === 15) {
    cellProperties.renderer = borderTest; // uses function directly
}
if ((row === 6 && col > 1) || (row === 12 && col > 1) || (row === 18 && col > 1)) {
    cellProperties.renderer = bgTest; // uses function directly
}
return cellProperties;

};

function bgTest(instance, td, row, col, prop, value, cellProperties) {
    Handsontable.renderers.TextRenderer.apply(this, arguments);
    td.className = 'testbg';
}

function borderTest(instance, td, row, col, prop, value, cellProperties) {
    Handsontable.renderers.TextRenderer.apply(this, arguments);
    td.className += 'testborder';
}

Пожалуйста, не обращайте большого внимания на логику. В данный момент меня беспокоит то, что если ячейка удовлетворяет обоим условиям, она добавляет один класс к другому.

Хакерский способ был бы для меня сделать еще больший IF с комбинацией обеих логик, но по мере того, как моя сетка становится все более сложной, поддерживать ее будет гораздо сложнее.

Итак, мой вопрос заключается в том, есть ли простой способ назначить несколько классов для ячеек, не одновременно.

Автор: Pablo Rincon Источник Размещён: 08.11.2017 10:37

Ответы (1)


0 плюса

5882 Репутация автора

Суть в том, что нет, вы не можете назначать классы так, как вы описываете, потому что Handsontable специально рендерит всю ячейку на каждой итерации. Для этого есть веские причины, главным образом для уменьшения ошибок в состоянии.

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

Автор: ZekeDroid Размещён: 10.11.2017 02:21
Вопросы из категории :
32x32