2016-01-08 89 views
8

首先,我對C#和Json非常陌生。如何使用json數組使用webrequest繪製折線圖

我想在C#GUI中繪製來自mysql表格數據的圖形。我犯了一個PHP文件,選擇從MySQL數據庫表中的數據,並使用echo json_encode(array("result"=>$result))

這是我的PHP迴盪在JSON數組選擇的內容:

<?php 
define('HOST','*********************'); 
define('USER','*********************'); 
define('PASS','*********************'); 
define('DB','***********************'); 

if($_SERVER['REQUEST_METHOD']=='GET'){ 

$start = $_GET['start']; 
$ending = $_GET['ending']; 
} 

$con = mysqli_connect(HOST,USER,PASS,DB); 


$sql = "SELECT * FROM table WHERE date_time BETWEEN '$start' and '$ending'" ; 
$res = mysqli_query($con,$sql); 

$result = array(); 
while($row = mysqli_fetch_array($res)){ 
array_push($result,array('id'=>$row[0],'p_pairs'=>$row[1],'temp1'=>$row[2] ,'temp2'=>$row[3],'temp3'=>$row[4],'temp4'=>$row[5],'temp5'=>$row[6],'avg_current'=>$row[7],'avg_voltage'=>$row[8],'kw'=>$row[9],'kwh'=>$row[10])); 
} 

echo json_encode(array($result)); 

mysqli_close($con); 

?> 

使用鏈接,我可以清楚地看到JSON數組所有我想要的是繪製溫度值(temp1,temp2,...),p對值和其他圖形以及date_time在線圖中以讀取歷史數據。

所有,當我訪問PHP頁面是我得到:

[[{"id":"1","p_pairs":"0000-00-00 00:00:00","temp1":"2","temp2":"100","temp3":"100","temp4":"100","temp5":"100","avg_current":"100","avg_voltage":"300","kw":"300","kwh":"300"},{"id":"2","p_pairs":"0000-00-00 00:00:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"3","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"4","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"}]] 

注:某些日期時間在這裏設置爲默認值。我只是想展示這個陣列。正確的一個將是完美的繪製圖。

我可以使用來自C#的Web請求在字符串中獲取這些數組。使用波紋管代碼:

 System.Net.WebClient wc = new System.Net.WebClient(); 
     byte[] raw = wc.DownloadData("url to php"); 

     string webData = System.Text.Encoding.UTF8.GetString(raw); 

這將是一個很大的幫助。如果有人能幫助我在折線圖繪製這是DATE_TIME Vs的temp1中,TEMP2或p_pairs並像在C#GUI ...

這對我來說是一個很大的幫助。 提前感謝您。

+0

開始時,你應該使用Newtonsoft的JSON.net到WEBDATA轉換成可用的JSON對象。查看一些教程。 你想要生成什麼?你是否試圖用圖形生成一個JPG或PNG?或者這是爲了在網站上顯示? – Nikhil

+0

感謝您的回覆。我想在我的Winform UI中繪製它們。這是在反序列化並找到表格後完成的。 我目前的問題是,我有六個相同的表,如上所述。我想以曲線圖的形式繪製類似date_time vs temp1(table1),tamp1(table2),tamp1(table3),tamp1(table4),tamp1(table5),tamp1(table6)的圖表。 所有的表都在相同的數據庫中,並且結構是相同的。 – Althaf

+1

這聽起來像你只需要一個圖形庫。看看https://code.msdn.microsoft.com/mschart。 Infragistics,DevExpress和其他構件製造商有其他工具來創建圖形。 – Nikhil

回答

1

首先讓班上班。您可以動態地從Json的

創建一個類,如果你很高興有於System.Web.Helpers組件的依賴,那麼你可以使用JSON類:

dynamic data = Json.Decode(json); 

它是包含在MVC框架作爲.NET 4框架的額外下載。或者使用NewtonSoft。

下得到一個圖表組件:https://msdn.microsoft.com/en-us/library/dd489237.aspx和數據綁定到圖表