我正在尝试将Google Charts p属性添加到PHP中的表格表的JSON数据中,但无法正常工作。
$options = mysqli_query($con, $sql_sub[3]);
$rows = array();
$table = array();
$table['cols'] = array(
array('label' => 'Information','type' => 'string'),
array('label' => '#Number','type' => 'number'),
);
$row = mysqli_fetch_row($options);
$sub_array = array();
$sub_array[] = array("v" => 'Dropped by OPTIONS');
$sub_array[] = array("v" => $row[0]);
$sub_array[] = array("p" => "{'className': 'subrows'}");
$rows[] = array("c" => $sub_array);
$table['rows'] = $rows;
echo json_encode($table);
其中“子行”定义为:
.subrows {
background-color: darkblue;
}
在客户端,我具有以下Javascript函数,该函数请求JSON数据并绘制表:
function draw_table(pageID, chartID) {
fetch(fullUrls[chartID]).then(function (response) {
response.json().then(function (json) {
let data = new google.visualization.DataTable(json);
let cssClassNames = { 'headerRow': 'headerRow', 'tableCell': 'tableCell', 'oddTableRow': 'oddTableRow' };
let table = new google.visualization.Table(document.getElementById(`table_div_${graphs[chartID]}`));
table.draw(data, { height: '100%', allowHtml: true, cssClassNames: cssClassNames });
})
})
.catch(error => console.error('Error:', error))
}
我希望该行的背景色为深蓝色,但不是。
我在此处找到的文档:https://developers.google.com/chart/interactive/docs/reference#dataview-class,位于“ DataView类”部分的上方。
有两个相关的问题,但我无法将其解决方案用于我的案子。
谢谢。
朱利安
答案 0 :(得分:0)
您将已经转换为JSON的内容与要转换为JSON的内容混合在一起。
$sub_array[] = array("p" => "{'className': 'subrows'}");
应该看起来像这样,否则将被双重编码:
$sub_array[] = array("p" => array('className' => 'subrows')));
此外,您需要确保可视化确实使用了p和className(来自文档):
如果您的可视化支持任何数据表级别的属性,它将 描述他们;否则,此属性将可用于 应用程序使用。
此外,此语法看起来像是PHP或Javascript的错误或混合:
let table = new google.visualization.Table(document.getElementById(`table_div_${graphs[chartID]}`));
也许其中应该包含<?php echo ... ; ?>
。
答案 1 :(得分:0)
在Data Format中查看表格图表
className
属性只能应用于单元格,不能应用于行
您必须将className
分配给每一列,
在这种情况下,请使用以下php ...
$sub_array = array();
$sub_array[] = array("v" => 'Dropped by OPTIONS', "p" => array('className' => 'subrows'));
$sub_array[] = array("v" => $row[0], "p" => array('className' => 'subrows'));
$rows[] = array("c" => $sub_array);