将jQuery插件与数据库集成

时间:2013-04-08 05:29:43

标签: jquery asp.net

此插件适用于静态值。但我想使用数据库中的值。这是一张三维图表。我已经尝试了一切,但找不到任何解决方案。所以要帮忙。我尝试过各种各样的事情。搜索了可以解释这一点的每个可能的网站。但到目前为止还没有任何帮助。甚至搜索了制作这类插件但没有找到适当文档的网站。对于想要将任何jQuery插件与他们的数据库集成的其他开发人员来说,这将是一个问题。

<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Highcharts Example</title>




       <script type="text/javascript">
         var mysuperdata= null;
        jQuery.ajax({
        url: url: "Default2.aspx/GetData",
        contentType: "application/json; charset=utf-8",
        data: { "param1": p1, "inicialDate": inicialDate, "finalDate": finalDate },
        dataType: "jsonp",
       success: function (d) { mysuperdata = d }
      });


     </script>


<script 
     type="text/javascript"                                                                                   
     src=
     "http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
      $(function () {
            var chart;
            $(document).ready(function () {
                chart = new Highcharts.Chart({
                    chart: {
                        renderTo: 'container',
                        plotBackgroundColor: null,
                        plotBorderWidth: null,
                        plotShadow: false
                    },
                    title: {
                        text: 'Browser market 
                         shares at a specific website,   2010'
                    },
                    tooltip: {
                        pointFormat: '{series.name}: 
                            <b>{point.percentage}%</b>',
                        percentageDecimals: 1
                    },
                    plotOptions: {
                        pie: {
                            allowPointSelect: true,
                            cursor: 'pointer',
                            dataLabels: {
                                enabled: true,
                                color: '#000000',
                                connectorColor: '#000000',
                                formatter: function () {
                                    return '<b>' + this.point.name + 
                                   '</b>: ' + this.percentage + ' %';
                                }
                            }
                        }
                    },
                    series: [{
                      type: 'pie',
                      name: 'Browser share',
                      data: mysuperdata
                  }]
                });
            });

        });
    </script>
  </head>
    <body>
     <script src="http://code.highcharts.com/highcharts.js"></script>
      <script src="http://code.highcharts.com/modules/exporting.js"></script>
           <div id="container" style="min-width: 400px; height:
                   400px; margin: 0 auto"></div>

            </body>
          </html>       using System;
       using System.Collections.Generic;
       using System.Linq;
       using System.Web;
       using System.Web.UI;
       using System.Web.UI.WebControls;
       using System.Web.Services;
       using System.Web.Script.Services;

       public partial class Default2 : System.Web.UI.Page
       {
         protected void Page_Load(object sender, EventArgs e)
        {

        }  
         [WebMethod]
       [ScriptMethod(ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)]
        public static Array GetData()
         {
           return new Dictionary<string, double>()
              {
                 { "Firefox", 45 },
                 { "IE", 24.8 },
                 { "Chrome", 12.8 },
                 { "Safari", 8.5 },
                 { "Opera", 5.2 },
                 { "Outros", 3.7 },
              }.ToArray();
           }
          }

我已经编辑了代码adriano,但它仍然没有用。它显示一个空白页面。我现在不知道该怎么办。

3 个答案:

答案 0 :(得分:1)

很难解释,但在这里我们使用highcharts并从数据库加载数据。

首先,您需要知道使用jquery向使用JSON的web方法发送调用。如果你正在使用c#,可能会是这样的:

使用Javascript:

var mysuperdata= null;
jQuery.ajax({
    url: url: "Data.aspx/GetData",
    contentType: "application/json; charset=utf-8",
    data: { },
    dataType: "jsonp",
    success: function (d) { mysuperdata = d }
});

在此示例中,您正在访问Data.aspx页面,从而导致Method GetData不传递任何参数。但是你可以传递参数。

C#:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)] 
public static Array GetData() 
{
    return new Dictionary<string, double>()
    {
        { "Firefox", 45 },
        { "IE", 24.8 },
        { "Chrome", 12.8 },
        { "Safari", 8.5 },
        { "Opera", 5.2 },
        { "Outros", 3.7 },
    }.ToArray();
}

现在我们知道了获取数据!这个数据重要的是你的聊天系列数据,你发送这个Json:

        [
            ['Firefox', 45.0],
            ['IE', 26.8],
            {
                name: 'Chrome',
                y: 12.8,
                sliced: true,
                selected: true
            },
            ['Safari', 8.5],
            ['Opera', 6.2],
            ['Others', 0.7]
        ]

你的C#必须返回一个像这个对象一样的数组,它很容易用C#挂载。

最后你有了你的图表:

     $(function () {
        var chart;
        $(document).ready(function () {
            chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'container',
                    plotBackgroundColor: null,
                    plotBorderWidth: null,
                    plotShadow: false
                },
                title: {
                    text: 'Browser market 
                     shares at a specific website,   2010'
                },
                tooltip: {
                    pointFormat: '{series.name}: 
                        <b>{point.percentage}%</b>',
                    percentageDecimals: 1
                },
                plotOptions: {
                    pie: {
                        allowPointSelect: true,
                        cursor: 'pointer',
                        dataLabels: {
                            enabled: true,
                            color: '#000000',
                            connectorColor: '#000000',
                            formatter: function () {
                                return '<b>' + this.point.name + 
                               '</b>: ' + this.percentage + ' %';
                            }
                        }
                    }
                },
                series: [{
                    type: 'pie',
                    name: 'Browser share',
                    data: mysuperdata 
                }]
            });
        });

    });

当然你可以返回更多的1值,你的图表是3D,可能更复杂,这只是一个解释,你如何从数据库中获取数据并插入你的图表...请尝试给你解决问题!

答案 1 :(得分:1)

如果您不想进行ajax / json调用,可以按照我的方法动态编写jquery函数,然后通过startupscript注册它。这是代码..

void loadchart()
{
     DateTime strat = DateTime.Parse(DropDownList1.SelectedValue);
     int day = strat.Day;
     int tosub = day - 1;
     strat = strat.AddDays((0 - tosub));
     DateTime edate = strat.AddMonths(1);
     edate = edate.AddDays(-1);
     double tot = 0;
     string jq = "<script type=\"text/javascript\"> $(document).ready(function () { var line1 = [";
     while (strat <= edate)
     {
          string x  = strat.ToString("dd/MMM/yy");
          double y = getregularorderamount(strat);
          tot += y;
          jq += "['"+x+"', "+y.ToString()+"],";
          strat = strat.AddDays(1);
     }
     jq = jq.Substring(0, jq.Length - 1);
     jq += @"];
        var plot1 = $.jqplot('chart1', [line1], {
       animate: true,";
     jq += "title: 'Total Order Amount For The Month Of - " + DateTime.Parse(DropDownList1.SelectedValue).ToString("MMMM-yyyy") + " = &#x20B9;" + tot.ToString() + "',";
       jq += @"     axes: {
                xaxis: {
                    renderer: $.jqplot.DateAxisRenderer,
                    tickOptions: {
                        formatString: '%b&nbsp;%#d'
                    }
                },
                yaxis: {
                       min:0,
                    tickOptions: {
                        formatString: '&#x20B9;%.0f'
                    }
                }
            },
            highlighter: {
                show: true,
                sizeAdjust: 7.5,
                formatString: 'On date: %s, Total sale amount: %s'
            },
            cursor: {
                show: false
            }
        });
    });";
  jq+="</script>";
     ScriptManager.RegisterStartupScript(this, this.GetType(), "bgh", jq, false);

希望这种肮脏的方法有所帮助。

答案 2 :(得分:0)

您需要向服务器和服务器脚本发送另一个AJAX请求以从DB获取值并返回到您的AJAX方法。然后你应该将这些值传递给你的模块来构建图表。