[英]Use SQL data for flot chart with C# and ASP
我是新手,不熟悉C#程序員,更喜歡SQL專家。 我正在嘗試使條形圖反映每月的銷售額。 我似乎無法將數據傳遞到圖表中。 我一直在到處尋找直接解決這個問題的方法,並在4天后獲得了零運氣。 這是存儲過程返回的內容:
MonthID SoldCount MonthName
4 101 Apr
8 118 Aug
2 74 Feb
1 74 Jan
7 113 Jul
6 126 Jun
3 114 Mar
5 129 May
9 47 Sep
這是我的代碼背后
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Configuration;
using SkywebReporter.Classes;
namespace SkywebReporter
{
public partial class DefaultObject : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
string conn = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;
[System.Web.Services.WebMethod]//public static web method in code behind
public static List<PNMACsales> GetData() //int StartRowindex,
{
List<PNMACsales> myResult = new List<PNMACsales>();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString))
{
//string sqlString = "SelectbyYearTotalProductAssign";
string sqlString = "PNMAC.procReportSalesCounts";
using (SqlCommand cmd = new SqlCommand(sqlString, conn))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (rdr.Read())
{
PNMACsales obj = new PNMACsales();
obj.SoldCount = Convert.ToInt32(rdr["SoldCount"]);
obj.MonthName = rdr["MonthName"].ToString();
myResult.Add(obj);
}
conn.Close();
}
}
return myResult;
}
}
}
這是我的JS文件Dashboard.js
function DrowChart() {
jQuery("#placeholder").html('');
var list12 = [];
jQuery.ajax({
type: "POST",
url: "DefaultObject.aspx/GetData",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
data: "{}",
success: function (data) {
jQuery.map(data.d, function (item) {
var list = [];
list.push("'" + item.MonthName + "'");
list.push(item.SoldCount);
list12.push(list);
});
var plot1 = jQuery.jqplot('chart1', [list12],
);
}
});
}
在FlotChart中處理日期時,您想通過使用以下ASP代碼過濾返回flotchart的日期,以UNIX時間戳返回乘以1000的日期:
DateDiff("s","01/01/1970",MyDate)*1000
這使FlotChart有了所需的功能,因此您可以使用它提供的所有日期功能。 執行此操作時,它將為您寫上日期和月份名稱等。
沒有看到您正在饋送的JSON數據流程圖,很難理解錯誤可能在哪里,但是由於您使用的是日期,因此它必須是其中之一。
假設您已成功從GetData()方法獲得響應,則需要序列化從GetData()函數返回的List。 這是因為JavaScript無法使用C#列表執行任何操作。 需要將其轉換為JS可以識別的字符串格式(JSON)。
正如一些評論所建議的那樣,將JSON.Net添加到C#項目中是實現此目的的簡便方法。
安裝JSON.Net之后,可以將GetData()的返回類型更改為string,然后執行以下操作:
return JsonConvert.SerializeObject(myResult);
在您的JavaScript中,您需要解析序列化列表:
var list = JSON.parse(data);
該列表應解析為對象數組,然后可以將其以所需的格式傳遞到flot中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.