ECharts,一個純 Javascript 的圖表庫,能夠流暢的運行在 PC 和移動設備上,兼容當前絕大部分瀏覽器(IE8/9/10/11,Chrome,Firefox,Safari等),底層依賴輕量級的 Canvas 類庫 ZRender,提供直觀,生動,可交互,可高度個性化定製的數據可視化圖表。javascript
ECharts 3 中更是加入了更多豐富的交互功能以及更多的可視化效果,而且對移動端作了深度的優化。html
ECharts 提供了常規的折線圖,柱狀圖,散點圖,餅圖,K線圖,用於統計的盒形圖,用於地理數據可視化的地圖,熱力圖,線圖,用於關係數據可視化的關係圖,treemap,多維數據可視化的平行座標,還有用於 BI 的漏斗圖,儀表盤,而且支持圖與圖之間的混搭。java
你能夠在下載界面下載包含全部圖表的構建文件,若是隻是須要其中一兩個圖表,又嫌包含全部圖表的構建文件太大,也能夠在在線構建中選擇須要的圖表類型後自定義構建。git
竟然在大百度搜索不到ASP.NET MVC與ECharts的結合使用!好吧....github
ECharts提供健全的幫助文檔,本節只演示其JSON的格式,MVC返回符合EChart適合的格式來動態顯示報表的展示。數據庫
ECharts的Json格式對於初學者來講是比較複雜的。其中包括多種形式,咱們能夠從下面Json格式看出,這只是一個簡單的柱狀圖api
可是複雜的圖形,其中幾個變化都離不開這種格式瀏覽器
var option = { title: { text: 'ECharts 入門示例' }, tooltip: {}, legend: { data:['銷量'] }, xAxis: { data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"] }, yAxis: {}, series: [{ name: '銷量', type: 'bar', data: [5, 20, 36, 10, 10, 20] }] };
我這裏下載的是完整的組件JS,下載成功並複製到項目下echarts
或者你須要更多的主題,那麼須要下載CSSdom
使用必須引入下載的JS與主題樣式(除非你不想要主題)
<script src="@Url.Content("~/Scripts/echarts.min.js")"></script>
<!-- 爲ECharts準備一個具有大小(寬高)的Dom --> <div id="main"></div>
報表將展示在ID爲main的DIV內
優先初始化報表的對象,寫在$(function(){ });內
var myChart = echarts.init(document.getElementById('main'));
我這裏演示商品的售價和成本價的對比!代碼能夠下載58節代碼來一塊兒製做58節(包含了一張商品價格表),或者到文章結尾直接下載本節代碼!
利用EasyUI分頁動態顯示。當用戶點擊下一頁時候刷新ECharts數據
因此咱們必須在Datagrid加載成功時進行刷新
添加EasyUI加載成功的方法
onLoadSuccess: function (data) {
var grid = $('#List');
var options = grid.datagrid('options');
var m_page = options.pageNumber;
var m_rows = options.pageSize;
var m_sort = options.sortName;
var m_order = options.sortOrder
$.post("@Url.Action("GetOptionByBarChart")", { page: m_page, rows: m_rows, order: m_order, sort: m_sort }, function (option) {
// 使用剛指定的配置項和數據顯示圖表。
myChart.setOption(option);
});
},
得到當前頁碼,頁數,排序等屬性到後臺數據庫查詢數據
hmyChart.setOption(option); 加載報表從後臺得到的Json數據
根據ECahrts的Json格式得到對應的Json數據
包含的data實際上是個List,因此們必須在返回的數據中序列化其數據格式,固然你返回的數據必須都包含以上屬性
後臺方法:
public JsonResult GetOptionByBarChart(GridPager pager, string queryStr)
{
List<Spl_ProductModel> list = m_BLL.GetList(ref pager, queryStr); List<decimal?> costPrice = new List<decimal?>(); list.ForEach(a => costPrice.Add(a.CostPrice)); List<decimal?> price = new List<decimal?>(); list.ForEach(a => price.Add(a.Price)); List<string> names= new List<string>(); list.ForEach(a=> names.Add(a. Name)); List<ChartSeriesModel> seriesList = new List<ChartSeriesModel>(); ChartSeriesModel series1 = new ChartSeriesModel() { name = "成本價", type = "bar", data = costPrice }; ChartSeriesModel series2 = new ChartSeriesModel() { name = "零售價", type = "bar", data = price }; seriesList.Add(series1); seriesList.Add(series2); var option= new { title= new{text= "成本價零售價對照表" }, tooltip= new{}, legend = new { data = "成本價零售價對照表" }, xAxis= new{ data= names}, yAxis= new{}, series = seriesList }; return Json(option); }
數據正確咱們直接得出效果
本節沒有過多的解析,你們下載源碼一看便知
其實其餘報表大同小異(如:hightcharts),咱們只要返回了其正確的JSon格式,就能展現報表
同理咱們能夠看到餅圖的數據
參考資料:http://echarts.baidu.com/demo.html
官方網站:http://echarts.baidu.com/index.html
API文檔:http://echarts.baidu.com/api.html#echarts
本節示例代碼下載 訪問密碼 69fd
代碼中修改Index.cshtml代碼:
@{ ViewBag.Title = "主頁"; Layout = "~/Views/Shared/_Index_Layout.cshtml"; } <script src="~/Scripts/echarts.min.js"></script> <!-- 爲ECharts準備一個具有大小(寬高)的Dom --> <div id="main"></div> <table id="List"></table> <div id="modalwindow" class="easyui-window" data-options="modal:true,closed:true,minimizable:false,shadow:false"></div> <script type="text/javascript"> $(function () { $('#List').datagrid({ url: '@Url.Action("GetList")', width: SetGridWidthSub(10), methord: 'post', height: $(window).height()/2-30, fitColumns: true, sortName: 'CreateTime', sortOrder: 'desc', idField: 'Id', pageSize: 15, pageList: [15, 20, 30, 40, 50], pagination: true, striped: true, //奇偶行是否區分 singleSelect: true,//單選模式 remoteFilter:true, //rownumbers: true,//行號 onLoadSuccess: function (data) { var grid = $('#List'); var options = grid.datagrid('options'); var m_page = options.pageNumber; var m_rows = options.pageSize; var m_sort = options.sortName; var m_order = options.sortOrder $.post("@Url.Action("GetOptionByBarChart")", { page: m_page, rows: m_rows, order: m_order, sort: m_sort }, function (option) { // 使用剛指定的配置項和數據顯示圖表。 myChart.setOption(option); }); }, columns: [[ { field: 'Id', title: 'Id', width: 80,hidden:true}, { field: 'Name', title: '產品名稱', width: 80, sortable: true }, { field: 'Code', title: '產品代碼', width: 80, sortable: true }, { field: 'Price', title: '產品價格', width: 80, sortable: true }, { field: 'Color', title: '產品顏色', width: 80, sortable: true }, { field: 'Number', title: '產品數量', width: 80, sortable: true }, { field: 'CategoryId', title: '類別', width: 80, sortable: true, formatter: function (value, row, index) { return row.ProductCategory; } }, { field: 'ProductCategory', title: '類別', width: 80, sortable: true,hidden:true }, { field: 'CreateTime', title: 'CreateTime', width: 80, sortable: true }, { field: 'CreateBy', title: 'CreateBy', width: 80, sortable: true } ]] }); // 基於準備好的dom,初始化echarts實例 $("#main").width($(window).width()-10).height($(window).height() / 2 - 10); var myChart = echarts.init(document.getElementById('main')); }); </script>