График Highchart датчик с данными JSON
как построить датчик highchart с данными JSON?
Я работаю над highchart gauge, у меня есть успехи в показе последних данных из базы данных. Я использовал JavaScriptSerializer
для этого
код..
<script type="text/javascript">
$(function () {
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'gauge',
plotBackgroundColor: null,
plotBackgroundImage: null,
plotBorderWidth: 0,
plotShadow: false
},
//Other char parameter comes here
}
function (chart) {
setInterval(function () {
$.getJSON("S14.aspx", function (data, textStatus) {
console.log(data);
$.each(data, function (index, wind) {
var point = chart.series[0].points[0],
newVal = wind;
point.update(newVal);
});
});
}, 3000);
});
код для JSON
public string chartData1
{
get;
set;
}
protected void Page_Load(object sender, EventArgs e)
{
List<double> _data = new List<double>();
GetData();
foreach (DataRow row in dt.Rows)
{
_data.Add((double)Convert.ToDouble(row["S11"]));
}
JavaScriptSerializer jss = new JavaScriptSerializer();
chartData1 = jss.Serialize(_data);
}
мой JSON выглядит как
[1387204961992.4268,72]
Ну проблема в том, что циферблат датчика не движется в соответствии с последними значениями, которые мне нужно обновить страницу для что. Я знаю, что это происходит потому, что GetData
функция выполняется только один раз. Я застрял здесь.
как получить перемещение набора в соответствии с последними обновлениями значений в базе данных?
3 ответов
попробуйте разместить эту часть кода
setInterval(function() {
$(function() {
$.getJSON('S12.aspx', function(data) {
$.each(data, function(val) {
if (val !== null)
{
var point = chart.series[0].points[0];
point.update(val);
}
});
});
})
},2000)
внутри диаграммы обратного вызова, как здесь:http://www.highcharts.com/demo/gauge-speedometer
Если вы получаете какие-либо ошибки,пожалуйста, прикрепите.
Я думаю, что есть ошибка или что-то в visual studio 2012
. Я просто вставляю весь код на новый aspx
страница это работает. Я ничего не сделал, я просто вставил код на другую страницу.
<script type="text/javascript">
$(function () {
$('#container1').highcharts({
chart: {
type: 'gauge',
alignTicks: false,
plotBackgroundColor: null,
plotBackgroundImage: null,
plotBorderWidth: 0,
plotShadow: false
},
title: {
text: 'Pressure Meter'
},
pane: {
startAngle: -150,
endAngle: 150
},
yAxis: [{
min: 0,
max: 1000,
lineColor: '#339',
tickColor: '#339',
minorTickColor: '#339',
offset: -25,
lineWidth: 2,
labels: {
distance: -20,
rotation: 'auto'
},
tickLength: 5,
minorTickLength: 5,
endOnTick: false
}, {
min: 0,
max: 1000,
tickPosition: 'outside',
lineColor: '#933',
lineWidth: 2,
minorTickPosition: 'outside',
tickColor: '#933',
minorTickColor: '#933',
tickLength: 5,
minorTickLength: 5,
labels: {
distance: 12,
rotation: 'auto'
},
offset: -20,
endOnTick: false
}],
series: [{
name: 'Pressure',
data: [80],
dataLabels: {
formatter: function () {
var psi = this.y,
bar = Math.round(psi / 14.50);
return '<span style="color:#339">' + psi + ' psi</span><br/>' +
'<span style="color:#933">' + bar + ' bar</span>';
},
backgroundColor: {
linearGradient: {
x1: 0,
y1: 0,
x2: 0,
y2: 1
},
stops: [
[0, '#DDD'],
[1, '#FFF']
]
}
},
tooltip: {
valueSuffix: ' psi'
}
}]
},
// Add some life
function (chart) {
setInterval(function () {
$.getJSON("S12.aspx", function (data, textStatus) {
$.each(data, function (index, wind) {
var point = chart.series[0].points[0],
newVal = wind;
point.update(newVal);
});
});
}, 3000);
});
});
</script>
для обновления диаграммы браузер каким-то образом должен запросить последние данные с сервера. Есть два способа сделать это:
- обновление страницы - вся страница извлекается снова, с последними данными.
- запрос Ajax. Это делает запрос только для данных, без повторной загрузки всей страницы.
Я полагаю, вы хотели бы обновить графику без перезагрузки всей страницы. Для того чтобы это сделать, нужно найти о создании ajax-запросов с помощью jquery.
сайт highcharts имеет некоторые ресурсы, которые помогут вам (например,http://www.highcharts.com/docs/working-with-data/preprocessing-live-data). Вам нужно узнать, как сделать вызов ajax в javascript и использовать возвращенные данные для обновления диаграммы. Вам также нужно будет написать серверную часть, которая возвращает данные ajax. Пример приведен в php, но он должен быть довольно прямым, чтобы сделать что - то подобное в asp.net.