Как раскрасить определенные строки в ag-сетке?

У меня есть сетка ag, и я хочу раскрасить только некоторые номера строк. Например, после обработки я обнаружил, что мне нужно раскрасить ТОЛЬКО строки №1, 4 и 5.

Я пробовал использовать функцию ag-grid getRowStyle, но тщетно

gridOptions.getRowStyle = function(params) {
    if (params.node.rowIndex % 2 === 0) {
    return { background: 'red' }
    }
}

person Kash If    schedule 18.07.2019    source источник
comment
Посмотри на это! ag-grid.com/javascript-grid-row-styles . Похоже, вы взяли код оттуда, так что он должен работать. И помните, что при использовании функции, которую вы разместили, работайте только с нечетными строками (не со строкой номер 4). Если вам нужны только 1, 4 и 5, вы должны сопоставить эти индексы.   -  person John    schedule 18.07.2019
comment
Также. Если вы сможете точно описать, что не работает, вам будет легче помочь.   -  person John    schedule 18.07.2019
comment
почему бы вам не добавить функцию, поскольку нет фиксированных индексов строк, и вы определяете индексы на основе обработки некоторых правил   -  person Pranay Rana    schedule 22.07.2019


Ответы (2)


Вот код прямо из документации

Если нужно раскрасить только несколько рядов. Вам нужно знать, какие строки нужно раскрасить. Я предполагаю, что у вас есть для этого состояние. Может быть, переменная с именем indices?

indices: Array<number> = [1,4,5]; // color these rows

gridOptions.getRowStyle = (params) => { // should use params, not indices in the first braces. Binds the component to this. Can use indices in the function now
    if (this.indices.includes(params.node.rowIndex)) {
        return { background: 'red' }
    }
}

Если вам нужна дополнительная помощь, вы должны быть более конкретными. Я не знаю, что не работает.

Вот Plunkr с примером. Я не уверен, как вы все настроили в своем проекте, но вы, вероятно, можете получить некоторые идеи о том, как изменить свой код, чтобы он соответствовал примеру, который я скорректировал из документации ag-grid. Надеюсь, пример поможет

person John    schedule 18.07.2019
comment
Спасибо, посмотрел, и это не помогло. Мне нужно конкретное решение раскраски только нескольких строк, таких как 1, 3, 6. Если вы можете помочь. - person Kash If; 18.07.2019
comment
Спасибо, я попробовал это решение, но кажется, что индексы массива не читаются внутри функции (). Я пробовал ваше решение, и оно дает мне эту ошибку: не удается прочитать индексы свойств undefined в getRowStyle - person Kash If; 18.07.2019
comment
Да, конечно. Теперь я вижу, что this указывает на gridOptions вместо вашего класса. Я обновил свой ответ, изменив способ вызова функции, привязав к нему ваш компонент, а не gridOptions. - person John; 18.07.2019
comment
У меня по-прежнему не удается прочитать индексы свойств неопределенной ошибки. См. Код plunkr здесь: plnkr.co/edit/OT6dJlqbhn0K87CNxrmk?p=preview - person Kash If; 22.07.2019
comment
Я допустил ошибку. getRowStyles = (indices) => {} на самом деле должен быть getRowStyles = (params) => {}. Я обновил свой ответ и добавил plunkr - person John; 22.07.2019
comment
@KashIf Вот вам обновление, модифицированный пример с предоставленным вами plunkr: plnkr.co/ edit / AuKAUS? p = preview - person John; 22.07.2019
comment
по какой-то причине код работает на plunkr, но в моем реальном проекте :( getRowClassRules = (index) = ›{return {предупреждение о больничных днях: function (params) {return indices.includes (params.node.rowIndex);} , болезни-дня-нарушение: data.sickDays ›8}} - person Kash If; 22.07.2019
comment
Вам нужно либо обновить свой вопрос, добавив более подходящий код, изменить свой проект, чтобы он соответствовал измененному вами plunkr, либо создать новый plunkr с вашим текущим кодом проекта. Без дополнительной информации я не смогу помочь вам больше, чем уже сделал. - person John; 22.07.2019
comment
Мне трудно получить доступ к значениям индексов внутри функций сетки. Вы привели пример для getRowClassRules, и я пытаюсь сделать это для getRowStyleScheduled точно так же, но получаю сообщение об ошибке. - person Kash If; 22.07.2019
comment
У вас был внешний вид Plunkr, который я добавил к ответу? plnkr.co/edit/VA9Lnq9OD0dp0NzCGxcL?p=preview вместо стилей. класса. - person John; 22.07.2019
comment
Большое Вам спасибо. Я понял. Я ценю ваши усилия и время. На это ушло около 3 недель моей жизни. - person Kash If; 22.07.2019

Можете ли вы попробовать это, так как вы хотите выделить строки на основе вашей обработки строк, поэтому следует установить некоторые правила, как показано ниже, и выделить строки

gridOptions.rowClassRules: {
  // apply green to 2008
  'rag-green-outer': function(params) { return params.data.year === 2008},

  // apply amber 2004
  'rag-amber-outer': function(params) { return params.data.year === 2004},

  // apply red to 2000
  'rag-red-outer': function(params) { return params.data.year === 2000}
}

таким образом вы можете раскрасить строку в соответствии с вашими критериями. Это взято только из веб-портала agird.

person Pranay Rana    schedule 22.07.2019