我正在尝试使用使用DropDownList值动态填充的HighCharts。假设我在DropDownList中有三个值,这三个值有不同的数据集,将绑定到HighChart。我做了如下工作,效果很好:
LoadTopsideModuleData(); function LoadTopsideModuleData() { $.ajax({ url: url9, type: "GET", data: { 'id': reportId, 'moduleId': moduleId }, success: function (data) { if (data && data != null) { for (var i = 0; i < data.length; i++) { baseTopsideModuleDry.push(data[i].BaseDry); baseTopsideModulebaseOp.push(data[i].BaseOp); } var chartTopsideModule = { chart: { renderTo: 'containerTopsideModule', type: 'column' }, title: { text: 'B11P-A Weight By Disciplines' }, subtitle: { text: '' }, xAxis: { categories: [ 'Structural Primary', 'Structural Secondary', 'Mechanical', 'Piping', 'Electrical', 'Instrument', 'Telecommunication', 'Safety', 'Architectural ', 'Other/ Future Load ', 'Live Load' ], crosshair: true }, yAxis: { min: 0, title: { text: 'Weight Data' } }, tooltip: { headerFormat: '<span style="font-size:10px">{point.key}</span><table>', pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' + '<td style="padding:0"><b>{point.y:.1f}</b></td></tr>', footerFormat: '</table>', shared: true, useHTML: true }, plotOptions: { column: { pointPadding: 0, borderWidth: 0 } }, series: [ { name: 'Dry', data: baseTopsideModuleDry }, { name: 'Operating', data: baseTopsideModulebaseOp }] }; chart = new Highcharts.Chart(chartTopsideModule); } }, error: function (xhr, status, error) { showErrorPopup('Error', error); } }); }
现在,当我更改DropDownList值时,它不会从图表中清除以前的数据集。在此处共享截图:
图1:初始加载时
屏幕截图1
图2:当更改DropDownList值时,图表将以如下方式呈现之前的数据集、分散视图
屏幕截图2
我试图在DropDownList事件中清除HighChart,但未能做到,因为它没有:
var chart; $("#topsideModuleName").change(function () { var moduleIdChange = $("#topsideModuleName").val(); $.ajax({ url: url9, type: "GET", data: { 'id': reportId, 'moduleId': moduleIdChange }, success: function (result) { chart.destroy(); //Clear chart object when initialization LoadTopsideModuleData(); }, error: function (xhr, status, error) { showErrorPopup('Error', error); } }); });
是否有任何解决方法可以在图表中一次呈现特定数据集?如果有人对此提出建议,请告知。