1. 程式人生 > >HighCharts中URL在頁面之間傳引數及跳轉解決方案

HighCharts中URL在頁面之間傳引數及跳轉解決方案

HighCharts中柱狀圖,餅圖等可以實現點選圖表資料來實現頁面之間的跳轉,跳轉到重定向的頁面,並且把對應圖表的資料傳遞到要跳轉到的頁面

下面使用一個簡單的例項進行演示:

這裡使用HighCharts的Cloumn柱狀圖

1.首先,需要在頁面的<script>中引入jquery.js,highcharts.js 以及匯出圖表需要用到的exporting.js

<script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script> 
<script type="text/javascript" src="http://cdn.hcharts.cn/highcharts/4.0.1/highcharts.js"></script> 
<script type="text/javascript" src="http://cdn.hcharts.cn/highcharts/4.0.1/modules/exporting.js"></script> 

2.編寫Column圖的資料,這裡展示一個簡單的demo
<pre name="code" class="html"> $(function () {
         $('#container').highcharts({
             chart: {
                 type: 'column'
             },

             xAxis: {
                 categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
             },

             plotOptions: {
                 series: {
                     cursor: 'pointer',

                     point: {
                         events: {
                             click: function () {
                                 //在當前頁面跳轉
                                 window.open(this.options.url);

                                 //當出現[window object]404錯誤時,只需要呼叫window.open(this.options.url)就OK了

                                 //跳出到新頁面,那就用
                             //    location.href = "javascript:void(window.open('" + this.options.url +  //"','PageTitle','fullscreen=1;location=1;directories =1;status=1;toolbar=1;scrollbars=1;resizable=1'))"

                                 //這裡使用的url要後面的series中的data裡使用json格式給出,可以使用靜態json,也可以從後臺傳遞json資料
                             }
                         }
                     }
                 }
             },

            series: [{
                 data: [{
                     y: 100.8,
                     url: 'demo.aspx?param1=111111&param2=222222'
                 }, {

                     y: 50.8,
                     url: 'demo1.aspx?param3=333333&param4=444444'


                 }, {

                     y: 145.8,
                     url: 'demo2.aspx?param1=111111&param2=222222'


                 }, {

                     y: 46.8,
                     url: 'demo3.aspx?param1=111111&param2=222222'


                 }, {

                     y: 125.2,
                     url: 'demo4.aspx?param1=111111&param2=222222'


                 }, {

                     y: 135.6,
                     url: 'demo5.aspx?param1=111111&param2=222222'


                 }, {

                     y: 124.8,
                     url: 'demo6.aspx?param1=111111&param2=222222'


                 }]
             }]
         });
     });

     </script>


3.<body>中放置一個div容器,注意id=“container” 一定要和2中的名稱保持一致

 <div id="container" style="height: 400px"> </div>

4.前臺測試資料一些完畢,下面就要在頁面之間進行引數傳遞了,這裡我們只演示url: 'demo.aspx?param1=111111&param2=222222',,點選該條資料

可以跳轉到demo.aspx頁面,並把資料param1=111111&param=222222以引數的形式傳遞過去。在demo.aspx中使用Request.Params["param1"]即可獲取

demo.aspx的後臺中獲取引數的方法如下

 string param1= (string)Request.Params["param1"];
  Label1.Text = param1;

 string param2 = Request.Params["param2"];
 Label2.Text = param2;

獲取到傳遞來的引數值,並顯示在demo.aspx前臺的兩個Label中
<body>
    <form id="form1" runat="server">
    <div>
       Param1:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            
       Param2:<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>

5.到此,highcharts中點選表資料,在頁面之間傳遞引數,並跳轉到指定頁面的過程演示完畢。

下面給出例項的完整程式碼:

HighChartsDemo.aspx前臺的頁面程式碼,後臺不用修改
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HighChartsDemo.aspx.cs" Inherits="demo_HighChartsDemo" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
 <script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script> 
<script type="text/javascript" src="http://cdn.hcharts.cn/highcharts/4.0.1/highcharts.js"></script> 
<script type="text/javascript" src="http://cdn.hcharts.cn/highcharts/4.0.1/modules/exporting.js"></script> 
 <script type="text/javascript">


     $(function () {
         $('#container').highcharts({
             chart: {
                 type: 'column'
             },

             xAxis: {
                 categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
             },

             plotOptions: {
                 series: {
                     cursor: 'pointer',

                     point: {
                         events: {
                             click: function () {
                                 //在當前頁面跳轉
                                 window.open(this.options.url);

                                 //當出現[window object]404錯誤時,只需要呼叫window.open(this.options.url)就OK了

                                 //跳出到新頁面,那就用
                             //    location.href = "javascript:void(window.open('" + this.options.url +  //"','PageTitle','fullscreen=1;location=1;directories =1;status=1;toolbar=1;scrollbars=1;resizable=1'))"

                                 //這裡使用的url要後面的series中的data裡使用json格式給出,可以使用靜態json,也可以從後臺傳遞json資料
                             }
                         }
                     }
                 }
             },

             series: [{
                 data: [{
                     y: 100.8,
                     url: 'demo.aspx?param1=111111¶m2=222222'
                 }, {

                     y: 50.8,
                     url: 'demo1.aspx?param3=333333¶m4=444444'


                 }, {

                     y: 145.8,
                     url: 'demo2.aspx?param1=111111¶m2=222222'


                 }, {

                     y: 46.8,
                     url: 'demo3.aspx?param1=111111¶m2=222222'


                 }, {

                     y: 125.2,
                     url: 'demo4.aspx?param1=111111¶m2=222222'


                 }, {

                     y: 135.6,
                     url: 'demo5.aspx?param1=111111¶m2=222222'


                 }, {

                     y: 124.8,
                     url: 'demo6.aspx?param1=111111¶m2=222222'


                 }]
             }]
         });
     });

     </script>

</head>
<body>
    <form id="form1" runat="server">
    <div id="container" style="height: 400px">
    </div>
    

    </form>
</body>
</html>

demo.aspx的前臺頁面程式碼
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="demo.aspx.cs" Inherits="demo_demo" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
     <div>
       Param1:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br />    
       Param2:<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>

demo.aspx後臺的頁面程式碼,只是用來接受傳遞的引數,其實這裡在前臺使用解析url的方式也可以實現,但是會比較麻煩,可以參考的我的另一篇部落格

demo.aspx後臺頁面的程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class demo_demo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string param1 = (string)Request.Params["param1"];
        Label1.Text = param1;

        string param2 = Request.Params["param2"];
        Label2.Text = param2;
    }
}

該demo已經完整測試驗證,可行,執行效果如下:

http://localhost:35094/demo/HighChartsDemo.aspx

點選第一個資料 http://localhost:35094/demo/demo.aspx?param1=111111&param2=222222

得到傳遞的引數值

Param1:111111
Param2:222222