Когда-то на заре гридов просил сделать возможность подсветки строк, ответа не получил, сделал себе и забыл. Тут недавно копался в коде новой версии и обнаружил, что там так ничего и нет, а бывает нужно.
Моё старое решение, если кому пригодится:
1. Копируем шаблон гридов в пространство дефолт или в пространство шаблона сайта как дефолт, это уже как кому требуется.
2. Находим в шаблоне открытие строки таблицы и добавляем простенькое
<tr oncontextm enu="return bxGrid_<?=$arParams["GRID_ID"]?>.oActions[<?=$index?>]"<?if($sDefAction <> ''):?> ondblcl ick="<?=htmlspecialcharsbx($sDefAction)?>" title="<?=GetMessage("interface_grid_dblclick")?><?=$sDefTitle?>"<?endif?><?=(isset($aRow["class"]) ? ' class="'.$aRow["class"].'"' : '')?>> |
Добавили мы сюда добавление класса из массива текущей строки, если он там есть, т.е. вот этот кусочек
<?=(isset($aRow["class"]) ? ' class="'.$aRow["class"].'"' : '')?> |
3. Теперь добавляем стили шаблона, ну, например, так:
table.bx-interface-grid tr.bx-even.grid-important td {background-color:#F2D2D2;}
table.bx-interface-grid tr.bx-even.grid-important td.bx-sorted {background-color:#EDCDCD;}
table.bx-interface-grid tr.bx-odd.grid-important td {background-color:#FFE0E0;}
table.bx-interface-grid tr.bx-odd.grid-important td.bx-sorted {background-color:#F8D8D8;}
|
Название класса придумываем сами, у меня это grid-important
В общем-то, вот и вся правка гридов.
4. Вопрос в том, а откуда там возьмётся класс? Ответ простой: гриды - чисто интерфейсный компонент, об этом и название глаголит (main.interface.grid), подготовкой данных для него занимается вызывающий компонент, туда-то мы и будем вклиниваться при необходимости. Я делал эту штуку потому что надо было обозначать как-то особо важные процессы в bizproc.wizards.list, там у меня и добавляются классы в нужные строки для гридов в result_modifier. Например, в выводимой пользователю таблице к определённому иб нужно подсветить все строки, в которых выставлен дедлайн:
foreach ($arResult["RECORDS"] as $key => $value)
{
switch ($arResult["Block"]["ID"])
{
case 65:
if (!empty($arResult["RECORDS"][$key]["data"]["PROPERTY_deadline"]))
{
$arResult["RECORDS"][$key]["class"] .= " grid-important";
}
break;
}
}
|
Вот и всё. Решение простое и позволяет нагородить любую кучу классов для строки, главное стили не забыть добавить.