Я пытаюсь добавить цвет в ячейку w2ui
сетка.
После ознакомления с документацией я могу изменить цвет ячейки и строки (но индивидуально).
Для одной ячейки:
records: [
{ recid: 1, fname: 'Jane', lname: 'Doe', email: '[email protected]', sdate: 384052483664, style: {3:'background-color: yellow; color: white;'}}
]
Для одного ряда:
records: [
{ recid: 1, fname: 'Jane', lname: 'Doe', email: '[email protected]', sdate: 384052483664, style: 'background-color: red; color: white;'}
]
До этой части все в порядке, потому что я жестко кодирую записи.
Вопрос:
Я загружаю данные с сервера, и я устанавливаю правила, основанные на некоторых условиях, и я хочу соответственно изменить цвет.
Я понял, что мне нужно добавить стиль только на сервере (я использую php и mysql, кстати).
Ниже приведен мой пример кода:
$Query = "SELECT @curRow := @curRow + 1 as id ,`x`, `y`, `z`, `a`, `b`, `c`, `d`, `e`, `f`, `g`, `h`, `i`
FROM `table_name` JOIN (SELECT @curRow := 0) r";
//echo $Query;
$code=mysqli_query($link,$Query);
$data = array();
while($row = mysqli_fetch_assoc($code))
{
if($row["id"]==1)
{
//$row['expanded']="'spinner'";
//$object = (object) ['style' => "{ 5: 'color': 'red'; 'background-color': 'whilte' }"];
//$row['style']=$object;
$row['style']= "3:'background-color: red; color: black;'";
}
//var_dump ($row);
$data[] = $row;
}
$arr = array("total" => count($data),
"records" => $data);
Assueme if($row["id"]==1)
является одним из правил, поэтому здесь я пытаюсь добавить часть стиля. Если вы видите код, я попробовал несколько способов добавить стиль к нему. Это просто не работает. Но если я печатаю строки, используя php, я получаю строку точно так, как она должна кодироваться (см. Код для стиля отдельной ячейки, указанного выше). Но это не отражено в таблице.
Второй вопрос
Мне бы хотелось, чтобы строки были окрашены в один цвет, и, кроме того, я хотел бы покрасить одну отдельную ячейку по-разному (два разных правила, одно для строк и одно для столбцов). Поскольку я не смог выполнить первое требование, я не тратил много времени на эту проблему.
Третий вопрос
Как я могу сделать динамическую высоту строки? Допустим, у меня есть имя столбца response
Я назначил ему фиксированную ширину, когда содержимое этой строки превышает ширину, оно показывает ...
после доступной ширины. Я хочу показать это в следующей строке. Возможно ли это сделать?
Благодарю.
Чтобы ответить на ваш первый вопрос:
style
должен быть объектом JSON, когда он прибывает на стороне клиента, поэтому на стороне сервера это должен быть массив, который позже передается в json_encode()
$row['style'] => array('5' => 'background-color: red; color: black;');
...
$result = json_encode($row);
Чтобы ответить на ваш второй вопрос:
Последняя версия w2ui 1.5 поддерживает оба class
а также style
атрибуты в записи.
Итак, чтобы раскрасить ряд а также по-разному раскрасьте одну ячейку в строке, вы можете использовать:
records: [
{ recid: 1, fname: 'Jane', lname: 'Doe', class: 'my-css-class-for-the-row', style: {3: 'background-color: yellow; color: white;'} }
];
style
а также class
оба могут быть либо строкой, либо объектом, так что вы можете сделать это и наоборот style
раскрасить весь ряд и class
окрашивать конкретные клетки.
Чтобы ответить на ваш третий вопрос:
Строки не могут иметь динамическую высоту из-за виртуальной прокрутки. Это означает, что все строки должны иметь одинаковую высоту. Однако вы можете изменить высоту всех рядов с помощью
grid.recordHeight = 40; // height in pixels
Опять же, для этого требуется последняя версия 1.5 w2ui, и она выглядит странно, если ее использовать вместе с группами столбцов.
Других решений пока нет …