मैं SQL सर्वर से अपना डेटा प्राप्त करने के लिए AJAX का उपयोग कर रहा हूं, फिर मैं एक js सरणी तैयार करता हूं जिसका उपयोग मेरे चार्ट में डेटा के रूप में किया जाता है। AJAX के सफल होने के बाद जावास्क्रिप्ट कोड:
...,
success: function (data) {
var fseries = [];
var series = [];
for (var arr in data) {
for (var i in data[arr]['data'] ){
var d = data[arr]['data'][i];
//if (i < 5) alert("d.method = " + d.method);
var serie = {x:Date.parse(d.Value), y:d.Item, method:d.method };
series.push(serie);
}
fseries.push({name: data[arr]['name'], data: series, location: data[arr]['location']});
series = [];
};
DrawChart(fseries);
},
अब टूलटिप में अतिरिक्त मेटा-डेटा दिखाने के लिए:
...
tooltip: {
xDateFormat: '%m/%d/%y',
headerFormat: '<b>{series.name}</b><br>',
pointFormat: 'Method: {point.method}<br>Date: {point.x:%m/%d/%y } <br>Reading: {point.y:,.2f}',
shared: false,
},
मैं अपने रिजल्ट सेट के माध्यम से पुनरावृति करने के लिए एक DataRow का उपयोग करता हूं, फिर मैं Json प्रारूप में वापस पास होने से पहले मान निर्दिष्ट करने के लिए एक वर्ग का उपयोग करता हूं। यहाँ अजाक्स द्वारा नियंत्रित नियंत्रक क्रिया में C # कोड है।
public JsonResult ChartData(string dataSource, string locationType, string[] locations, string[] methods, string fromDate, string toDate, string[] lstParams)
{
List<Dictionary<string, object>> dataResult = new List<Dictionary<string, object>>();
Dictionary<string, object> aSeries = new Dictionary<string, object>();
string currParam = string.Empty;
lstParams = (lstParams == null) ? new string[1] : lstParams;
foreach (DataRow dr in GetChartData(dataSource, locationType, locations, methods, fromDate, toDate, lstParams).Rows)
{
if (currParam != dr[1].ToString())
{
if (!String.IsNullOrEmpty(currParam)) //A new Standard Parameter is read and add to dataResult. Skips first record.
{
Dictionary<string, object> bSeries = new Dictionary<string, object>(aSeries); //Required else when clearing out aSeries, dataResult values are also cleared
dataResult.Add(bSeries);
aSeries.Clear();
}
currParam = dr[1].ToString();
aSeries["name"] = cParam;
aSeries["data"] = new List<ChartDataModel>();
aSeries["location"] = dr[0].ToString();
}
ChartDataModel lst = new ChartDataModel();
lst.Value = Convert.ToDateTime(dr[3]).ToShortDateString();
lst.Item = Convert.ToDouble(dr[2]);
lst.method = dr[4].ToString();
((List<ChartDataModel>)aSeries["data"]).Add(lst);
}
dataResult.Add(aSeries);
var result = Json(dataResult.ToList(), JsonRequestBehavior.AllowGet); //used to debug final dataResult before returning to AJAX call.
return result;
}
मुझे लगता है कि सी # में कोड करने के लिए एक अधिक कुशल और स्वीकार्य तरीका है, लेकिन मुझे परियोजना विरासत में मिली है।
series
वस्तु में अतिरिक्त डेटा को जोड़ने और इस हैंडलर में प्रदर्शित करने की कोशिश की है ?