我通过执行以下操作,尝试在index page
处渲染局部视图以显示图表,当满足特定条件时。
Index.php
<?PHP . . . . else if($type == "403") { $columns = [ ['class' => 'yii\grid\SerialColumn'], 'Device_ID', 'Customer_ID', 'MSN', 'kWh', 'Data_Date_Time', ]; $this->render('_kwhChart', [ 'dataProvider' => $dataProvider, ]) ; } . . . . ?> <?= GridView::widget([ 'dataProvider' => $dataProvider, //'filterModel' => $searchModel, 'columns' => $columns ]); ?>
[当满足特定条件时,我可以看到更新的
gridview
值,但看不到局部视图,即图表。
全景视图
<?PHP
$dataPointskWh = array();
$model = $dataProvider->getModels();
foreach ($model as $row)
{
// pushing for kwh values
array_push($dataPointskWh,
array("label"=>$row['Data_Date_Time'],"y"=>$row['kWh']));
}
?>
<div id="chartContainer1" style="width: 100%; height: 300px;display: inline-block;"></div>
<script>
var chart1 = new CanvasJS.Chart("chartContainer1", {
exportEnabled: true,
animationEnabled: true,
zoomEnabled: true,
theme: "light1",
title:{
text: "Voltages"
},
legend:{
cursor: "pointer",
verticalAlign: "bottom",
horizontalAlign: "center",
itemclick: toggleDataSeries
},
data: [
{
type: "column",
lineColor:"red",
legendMarkerColor: "red",
name: "kWh",
indexLabel: "{y}",
//yValueFormatString: "V1#0.##",
showInLegend: true,
dataPoints: <?php echo json_encode($dataPointskWh, JSON_NUMERIC_CHECK); ?>
}
]
});
chart1.render();
function toggleDataSeries(e){
e.dataSeries.visible = !(typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible);
chart1.render();
}
注意:我使用的是提交按钮,每次单击提交按钮时,页面都会刷新。
我该如何实现?
任何帮助将不胜感激。
我正在尝试通过执行以下操作在索引页面上呈现部分视图,以在满足特定条件时显示图表。 Index.php
您不渲染render()..您需要.. echo