Как добавить класс CSS в определенные строки в slickGrid? - PullRequest
18 голосов
/ 19 января 2012

Я искал везде, чтобы узнать, как добавить класс в определенную строку в slickgrid. Похоже, раньше было свойство rowCssClasses, но теперь оно исчезло. Любая помощь по этому вопросу будет чрезвычайно признателен.

Обновление : я понял это с помощью getItemMetadata ... поэтому перед рендерингом вы должны сделать что-то вроде этого:

dataView.getItemMetadata = function (row) {
    if (this.getItem(row).compareThis > 1) {
        return {
            'cssClasses': 'row-class'
        };
    }
};

Это вставит этот 'row-class' в строку, соответствующую оператору if. Кажется, что эта функция getItemMetadata не существует, пока вы не поместите ее туда, и slickGrid не проверяет, есть ли там что-нибудь. Это усложняет определение его параметров, но если вы ищете getItemMetadata в файле slick.grid.js, вы должны найти некоторые скрытые сокровища! Надеюсь, это кому-нибудь поможет!

Если есть лучший способ сделать это, пожалуйста, дайте мне знать.

Ответы [ 3 ]

11 голосов
/ 19 июля 2012

В более новых версиях SlickGrid DataView предоставляет свой собственный getItemMetadata для предоставления форматирования для заголовков и итогов группы.Хотя это легко связать с вашей собственной реализацией.Например,

function row_metadata(old_metadata_provider) {
  return function(row) {
    var item = this.getItem(row),
        ret = old_metadata_provider(row);

    if (item && item._dirty) {
      ret = ret || {};
      ret.cssClasses = (ret.cssClasses || '') + ' dirty';
    }

    return ret;
  };
}

dataView.getItemMetadata = row_metadata(dataView.getItemMetadata);
7 голосов
/ 08 мая 2013
        myDataView.getItemMetadata = function(index)
        {
            var item = myDataView.getItem(index);
            if(item.isParent === true) {
                return { cssClasses: 'parentRow' };
            }
            else {
                return { cssClasses: 'childRow' };
            }
        };

// В моем CSS

       .parentRow {
           background-color:  #eeeeee;
        }
        .childRow {
           background-color:  #ffffff;
        }    
1 голос
/ 15 апреля 2013

Вы можете использовать функцию setCellCssStyles: https://github.com/mleibman/SlickGrid/wiki/Slick.Grid#wiki-setCellCssStyles

grid.setCellCssStyles (ключ, хэш)

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

hash - Хэш дополнительных классов CSS для ячеек, введенных по номеру строки, а затем по идентификатору столбца.Несколько CSS-классов могут быть указаны и разделены пробелом.

Пример:

{0: {"number_column": "cell-bold", "title_column": "cell-title cell-подсветка"}, 4: {" процентов_колонка ":" выделенные ячейки "}}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...