亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

HighCharts圖表控件在ASP.NET WebForm中的使用總結(全)

2020-01-24 01:34:20
字體:
來源:轉載
供稿:網友

從事過ASP.NET開發的可能都會接觸到一些圖表控件,比如OWC、ZendGraph等等,這些控件都有一個特點,那就是我們可以像操作.NET中的對象一樣控制它們的某些屬性,有可能在本地開發好了上傳到服務器端部署運行的時候會出現權限問題而導致不能正常運行。本篇周公講述一個JavaScript的圖表控件,不要小看了這個JavaScript圖表控件,它能生成各種常見的圖表。

Highcharts 是一個用純JavaScript編寫的一個圖表庫, 能夠很簡單便捷的在web網站或是web應用程序添加有交互性的圖表,并且免費提供給個人學習、個人網站和非商業用途使用。目前HighCharts支持的圖表類型有曲線圖、區域圖、柱狀圖、餅狀圖、散狀點圖和綜合圖表。

  HighCharts使用原理如下圖所示:

 

普通開發模式是在前端應用Jquery和HighChartsJS庫文件,然后在<head>頭中寫Js腳本,例如繪制餅圖Jquery腳本如下:

 繪制餅圖Jquery腳本

$(function () {  $('#container').highcharts({   chart: {    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: [     ['Firefox', 45.0],     ['IE',  26.8],     {      name: 'Chrome',      y: 12.8,      sliced: true,      selected: true     },     ['Safari', 8.5],     ['Opera',  6.2],     ['Others', 0.7]    ]   }]  }); });

其中data屬性為圖表綁定數據源。但這種方式也存在明顯問題:

前端代碼量過大
綁定動態數據比較困難,可取的方法是使用$.AJAX異步方法解析WebServices或者一般處理程序ashx,然后對返回結果進行JSON序列化處理,比較麻煩容易出錯。
HighCharts的Js調用代碼無法實現代碼重用。
  解決方案是使用第三方HighCharts組件DoNet.HighCharts, 該組件是一個服務器端生成HighCharts Js腳本的開源組件,然后通過輸出流的方式插入到頁面Body塊的DIV中,原理如下圖所示:

 

DoNet.HighCharts開發環境為(二選一)

VS2008+ASP.NET MVC3+.NET 3.5
VS2010+.NET 4.0

  DoNet.HighCharts開源項目是以ASP.NET MVC3 Project的形式分發的,開發人員可以參考控制器文件夾Controlls中的DemoController中每種圖表的后臺代碼(和前臺HighCharts JS代碼基本一致)

 

  MVC原理在這里做簡單表述,便于程序員閱讀該代碼。

M:Module 模型層
V:View 視圖層
C:Controll 控制層
  當客戶端發送一個Action動作時,根據動作名找到Controll控制器中相應的方法名。例如 http://localhost/Charts/Demo/BasicLine,MVC 框架根據全局路由配置自動映射到BasicLine控制器方法,控制器方法返回一個Result并導航到Views文件夾下的同名視圖BasicLine.cshtml(cshtml可以理解為WebForm的aspx)然后加載視圖。

  Asp.net mvc和Asp.net Web Form方式不同,所以以上MVC實現方式需要修改才能在WebForm中使用。以下以“各種類產品均價統計功能”柱形圖(涉及到NorthWind數據庫的Products和Categories表)為例說明WebForm中如何使用DoNet.HighCharts。

1:   創建查詢視圖View_CategoryAvgPrice

 

2:   創建強名稱數據集NorthWind.xsd

 

  數據集分為強名稱數據集和弱名稱數據集(DataSet)兩種,具體原理就不展開描述了。拖放View_CategoryAvgPrice和Categories表到數據集中。

3:   柱形圖控制器方法(ColumnWithDrilldown)在aspx頁面中的主要代碼實現

 柱形圖控制器方法(ColumnWithDrilldown)在aspx頁面中的主要代碼實現

//導入DoNet.HighCharts包using DotNet.Highcharts;using DotNet.Highcharts.Options;using DotNet.Highcharts.Enums;using DotNet.Highcharts.Helpers;using System.Drawing;using NorthWindTableAdapters;/// <summary>/// 種類商品價格統計類/// </summary>public class CategoryPrice{ public Decimal Price { set; get; } public string CategoryName { set; get; }}public partial class ColumnWithDrilldown : System.Web.UI.Page{ #region 創建強名稱數據集表對象和數據適配器對象private NorthWind.View_CategoryAvgPriceDataTable avgPriceDt;avgPriceDt= new NorthWind.View_CategoryAvgPriceDataTable(); private NorthWind.CategoriesDataTable categoryDt = new NorthWind.CategoriesDataTable(); private View_CategoryAvgPriceTableAdapter avgPriceAdapter = new View_CategoryAvgPriceTableAdapter(); private CategoriesTableAdapter categoryAdapter = new CategoriesTableAdapter(); #endregion private List<CategoryPrice> avgPriceList=null;//綁定數據源集合 protected void Page_Load(object sender, EventArgs e) {  LoadColumnWithDrilldown(); } public void LoadColumnWithDrilldown() {  avgPriceAdapter.Fill(avgPriceDt);  categoryAdapter.Fill(categoryDt);  //按產品種類分組顯示Linq表達式   avgPriceList =    (     from p in avgPriceDt     group p by p.CategoryID into g//根據種類編號分組     select new CategoryPrice     {      //種類名稱      CategoryName=categoryDt.First(c=>c.CategoryID==g.Key).CategoryName,      //種類商品均價      Price = g.Average(c => c.UnitPrice)     }    ).ToList();  //顯示柱形圖的種類名稱數組  string[] categories = new string[avgPriceList.Count()];  int index = 0;  foreach (var item in avgPriceList)  {   categories[index++] = item.CategoryName;  }  Data data = LoadDate();//柱形圖動態綁定的數據源  //省略HighCharts腳本代碼,同mvc代碼  div1.InnerHtml = chart.ToHtmlString();//轉換為HighCharts的客戶端腳本插入到div1中} //根據匯總的種類商品創建柱形圖節點對象的方法 private Data LoadDate() {   Data data = null;   int index =-1;   //創建柱形圖顯示的節點對象   DotNet.Highcharts.Options.Point []pointList=new DotNet.Highcharts.Options.Point[avgPriceList.Count];   foreach (var item in avgPriceList)   {    pointList[++index] = new DotNet.Highcharts.Options.Point    {     Y = (Number)(item.Price*100)/100.0,     Color = Color.FromName(string.Format("colors[{0}]", index))    };   }   data = new Data(pointList);   return data; }}

顯示效果如下圖所示:

 

以上就是本文的全部敘述,希望對大家有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久亚洲综合国产精品99麻豆精品福利| 毛片精品免费在线观看| 欧美亚洲在线视频| 日韩美女视频在线观看| 亚洲国产成人爱av在线播放| 国产午夜一区二区| 精品久久久久久久久久久久| 亚洲精品免费一区二区三区| 欧美日产国产成人免费图片| 久久久之久亚州精品露出| 国产精品免费一区| 91精品久久久久久久久| 欧美电影免费观看高清完整| 91在线视频导航| 美女视频黄免费的亚洲男人天堂| 国产精品综合久久久| 成人a级免费视频| 亚洲精品国产美女| 2024亚洲男人天堂| 欧美成人在线网站| 日韩在线中文视频| 国产成人在线亚洲欧美| 日韩欧美在线中文字幕| 亚州精品天堂中文字幕| 欧美中文字幕精品| 精品国产乱码久久久久久婷婷| 97在线免费视频| 欧美午夜视频一区二区| 91色视频在线导航| 国产免费久久av| 欧洲精品在线视频| 国产精品久久久久免费a∨大胸| 国产美女搞久久| 国产成人精品久久亚洲高清不卡| 成人午夜在线观看| 欧美精品福利在线| 亚洲毛茸茸少妇高潮呻吟| 国产有码一区二区| 欧美尺度大的性做爰视频| 最近2019中文字幕一页二页| 亚洲精品久久久久久久久久久久久| 久久久电影免费观看完整版| 欧美激情按摩在线| 伊人一区二区三区久久精品| 欧美激情成人在线视频| 亚洲欧美在线一区| 成人免费网视频| 欧美日韩第一页| 欧美一级免费看| 久久久国产一区二区| 91色在线视频| 欧美一区二区视频97| 中文字幕av一区二区三区谷原希美| 97成人精品视频在线观看| 黄色精品一区二区| 久久久av一区| 国产精品高清在线观看| 亚洲xxx视频| 日韩av黄色在线观看| 美女扒开尿口让男人操亚洲视频网站| 91精品免费久久久久久久久| 亚洲色图第一页| 国产视频精品免费播放| 97精品国产97久久久久久免费| 成人妇女免费播放久久久| 欧日韩不卡在线视频| 色妞欧美日韩在线| 亚洲欧洲国产一区| 亚洲激情视频在线播放| 欧美疯狂xxxx大交乱88av| 成人国产精品一区二区| 黄色成人在线免费| 国产亚洲成av人片在线观看桃| 2019av中文字幕| 国产精品日韩av| 亚洲国产精品电影| 68精品国产免费久久久久久婷婷| 日韩在线视频线视频免费网站| 欧亚精品在线观看| 久久久精品2019中文字幕神马| 国产成人在线播放| 日韩av手机在线观看| 亚洲欧美另类自拍| 欧美黄色小视频| 亚洲三级免费看| 日韩性生活视频| 亚洲自拍欧美色图| 久久精品国产久精国产思思| 日韩美女在线观看一区| 中文字幕欧美日韩精品| 国产一区二区三区在线观看网站| 国产成人福利网站| 久久久久亚洲精品国产| 国产精品一区二区三区久久久| 色综合导航网站| 国产精品国产三级国产aⅴ浪潮| 91在线高清免费观看| 91久久国产婷婷一区二区| 精品久久久久久久久久久| 色多多国产成人永久免费网站| 欧美日韩xxx| 亚洲精品久久久久久久久久久久| 欧美成人全部免费| 久久精品国产亚洲一区二区| 欧美日韩国产成人| 日本精品一区二区三区在线播放视频| 国产成人久久久精品一区| 日韩在线激情视频| 国产精品自拍偷拍视频| 在线亚洲男人天堂| 久久精品国产亚洲| 97精品免费视频| 欧美乱大交xxxxx另类电影| 亚洲一区二区久久久久久久| 精品一区二区电影| 日韩免费在线免费观看| 一区二区三区天堂av| 国产亚洲成av人片在线观看桃| 欧美中文字幕第一页| 6080yy精品一区二区三区| 国产精品一区电影| 超在线视频97| 日韩免费观看网站| 国产99视频在线观看| 国产精品久久视频| 亚洲午夜激情免费视频| 最近2019好看的中文字幕免费| 国产视频久久久久| 久久久免费观看视频| 一区二区三区高清国产| 久久久久99精品久久久久| 久久777国产线看观看精品| 国产精品6699| 国产精品久久久久久影视| 久久久亚洲网站| 亚洲成人免费网站| 欧美精品电影免费在线观看| 欧美性猛交xxxx乱大交极品| 成人欧美在线观看| 国产精品久久久久久久久久ktv| 亚洲а∨天堂久久精品喷水| 欧美亚洲国产成人精品| 欧美专区国产专区| 亚洲人精选亚洲人成在线| 亚洲黄色片网站| 国产视频精品一区二区三区| 国产伦精品一区二区三区精品视频| 久久久最新网址| 国产精品久久久久久av福利| 久久免费精品视频| 性日韩欧美在线视频| 亚洲欧美www| 午夜精品一区二区三区视频免费看| 欧美视频在线看| 伊人久久大香线蕉av一区二区| 亚洲欧美在线播放| 国产精品一区二区在线| 欧美性猛交xxxx富婆| 欧美亚洲成人免费| 亚洲人成网站免费播放| 国产精品久久97| 国产精品美女久久久久av超清| 国产97在线观看| 国产精品露脸av在线|