利用HighStock显示曲线,在右上角的日期间隔选择好日期后,从新请求后台数据,从新加载曲线。ajax
在HighStock的rangeSelector中有一个属性inputDateParser,在这里面能够定义一个回调函数,当输入完日期后,会调用这个函数。sql
右键查看元素可知,开始日期的input有name=‘min’属性,结束日期input有name='max'属性。这样只须要得到value只就能够了。json
在回调函数中会用到,本身调用本身,所以定义了func()函数,以便在回调函数中使用。本例在回调函数中只是模拟,原理是同样的,只要把ajax发送的数据改成min、max就能够了。在后台,接收日期查询数据返回数据。函数
1 $(function () { 2 $.getJSON("/handler1.ashx", function func(dt) { 3 var data=[]; 4 Highcharts.setOptions({ 5 global: { 6 useUTC:false 7 } 8 9 10 }); 11 for (var i = 0; i < dt.length; i++) { 12 data.push([Date.parse(dt[i]["Time"]), Number(dt[i]["Value"])]); 13 } 14 $('#highstock').highcharts('StockChart', { 15 16 credits: { 17 enabled:false 18 }, 19 20 navigator: { 21 enabled: $(window).width() > 640 22 }, 23 24 25 rangeSelector: { 26 selected: 1, 27 inputDateFormat: '%Y-%m-%d', 28 enabled: true, 29 inputDateParser:function () { 30 $.ajax({ //实现点击日期框 再次选择数据 31 url: '/handler1.ashx', 32 dataType: 'json', 33 data:'min=45', 34 success:function(ds) { 35 func(ds); 36 } 37 }); 38 39 } 40 }, 41 42 43 series: [{ 44 name: '持仓量', 45 data: data, 46 tooltip: { 47 valueDecimals: 2 48 } 49 }], 50 tooltip: { 51 formatter: function () { 52 var tip = ""; 53 tip += Highcharts.dateFormat("%Y年%m月%d日", this.points[0].point.x, false) + "<br/>"; 54 tip += "净持仓:" + this.points[0].point.y.toFixed(2) + "吨<br/>"; 55 return tip; 56 57 } 58 }, 59 yAxis: { 60 61 gridLineColor: '#ccc', 62 63 labels: { 64 formatter: function () { 65 return this.value + "吨"; 66 } 67 } 68 } 69 }); 70 }); 71 72 });
后台代码:接收到“45”说明是,点击日期选择框了,返回前2条数据。实际使用中,接收min、max日期,拼where条件查询数据返回。this
string min = context.Request["min"]??""; string sql; if (min=="45") { sql = "select top(2)Time,Value from TableTest order by Time"; } else { sql= "select Time,Value from TableTest order by Time"; } DataTable dt=SqlDbHelper.ExecuteDataTable(sql); context.Response.Write(JsonConvert.SerializeObject(dt));