我正在尝试为w2ui
grid的单元格添加颜色。
按照文档后,我可以更改单元格和行的颜色(但单独)。
对于单个细胞:
records: [
{ recid: 1, fname: 'Jane', lname: 'Doe', email: 'jdoe@gmail.com', sdate: 384052483664, style: {3:'background-color: yellow; color: white;'}}
]
对于单行:
records: [
{ recid: 1, fname: 'Jane', lname: 'Doe', email: 'jdoe@gmail.com', 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打印行,我会按照它应该编码的方式获得行(请参阅上面描述的单细胞样式的代码)。但它没有反映在表格中。
第二次停止
我希望用一种颜色的行着色,并且最重要的是,我想以不同的方式为一个单独的单元格着色(两个不同的规则,一个用于行,一个用于coloumns)。由于我无法达到第一个要求,我没有花太多时间在这个问题上。
第三个问题
如何使行的高度动态化?假设我有一个列名response
,我为其指定了一个固定宽度,当该行的内容超过宽度时,它会在可用宽度后显示...
。我想在下一行显示它。是否可以这样做?
感谢。
答案 0 :(得分:1)
回答您的第一个问题:
当 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
为整行着色{{1为特定细胞着色。
回答第三个问题:
由于虚拟滚动,行不能具有动态高度。这意味着,所有行必须具有相同的高度。但是,您可以使用
更改所有行的高度 class
同样,这需要最新的1.5版w2ui,如果与列组一起使用,它看起来很古怪。