簡體   English   中英

使用C#和ASP將SQL數據用於浮點圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM