• EXT.NET 使用总结(3)--动态图表


    动态生成雷达图--Radar

    效果图:

    aspx页面代码:

    1 <ext:Panel ID="ResultPanel" Border="true" runat="server">
    2     <Items>
    3     </Items>
    4 </ext:Panel>

    因为是动态生成图,所以只需要一个容器装载(Panel);

    aspx.cs代码

     1         [DirectMethod(Timeout = 2000000)]//限制执行超时时间
     2         protected void ReloadData(object sender, DirectEventArgs e)
     3         {
     4             Dictionary<string, Dictionary<string, double>> data = GenerateChartBySingleCorp();
     5             ResultPanel.Controls.Clear();
     6             Ext.Net.Panel Panel = GetGroupChart(data);
     7             ResultPanel.Add(Panel);//把生成带有Radar图的Panel加到容器里
     8             ResultPanel.ReRender();//重新装载容器(容器位置不变)
     9             // ResultPanel.Render();重新装载容器(容器位置根据添加子元素的顺序加载)
    10         }
     1        public Ext.Net.Panel GetGroupChart(Dictionary<string, Dictionary<string, double>> data )
     2         {
     3             List<Datas> DataList = GetDataSource(data);//数据源
     4 
     5             Ext.Net.Model ExtModel = new Ext.Net.Model();//定义一个mode
     6             ExtModel.Fields.Add(new ModelField("Name", ModelFieldType.String));
     7             Dictionary<string, double> first=data.First().Value;
     8             Dictionary<string, string> dataMODE = new Dictionary<string, string>();
     9             int i = 0;
    10             foreach (var item in first)
    11             {
    12                 ExtModel.Fields.Add(new ModelField("Data"+i, ModelFieldType.Float));
    13                 dataMODE.Add("Data"+i,item.Key);
    14                 i++;
    15             }
    16 
    17             RadialAxis ra = new RadialAxis();//定义图表类型,这里定义为 雷达图,也可以定义为线图,柱图,饼图等。
    18             ra.Maximum = 5;//最大值
    19             ra.Steps = 5;//分成几个圈
    20             //Maximum="5" Steps="5"
    21 
    22             Chart Chart = new Chart();//定义一个chart容器
    23             Chart.Height = 500;
    24             Chart.Width = 950;
    25             Chart.StyleSpec = "background:#fff;";
    26             Chart.StandardTheme = StandardChartTheme.Category2;
    27             Chart.InsetPadding = 20;
    28             Chart.Animate = true;
    29             Chart.LegendConfig = new ChartLegend(new ChartLegend.Config() { Position = LegendPosition.Right });
    30             foreach (var item in dataMODE)//循环加载数据集
    31             {
    32                 RadarSeries radarseries = new RadarSeries();
    33                 List<string> XFieldFields = new List<string>();
    34                 XFieldFields.Add("Name");
    35                 List<string> YFieldFields = new List<string>();
    36                 YFieldFields.Add(item.Key);
    37                 radarseries.XField = XFieldFields.ToArray();
    38                 radarseries.YField = YFieldFields.ToArray();
    39                 radarseries.ShowInLegend = true;
    40                 radarseries.ShowMarkers = true;
    41                 radarseries.Title = item.Value;
    42 
    43                 SpriteAttributes SpriteAttributes = new Ext.Net.SpriteAttributes();
    44                 SpriteAttributes.Radius = 5;
    45                 SpriteAttributes.Size = 5;
    46                 radarseries.MarkerConfig = SpriteAttributes;
    47 
    48                 SpriteAttributes SpriteAttributes1 = new Ext.Net.SpriteAttributes();
    49                 SpriteAttributes1.StrokeWidth = 2;
    50                 SpriteAttributes1.Fill = "none";
    51                 radarseries.Style = SpriteAttributes1;
    52 
    53                 ChartTip ChartTip = new Ext.Net.ChartTip();
    54                 ChartTip.TrackMouse = true;
    55                 ChartTip.Width = 250;
    56                 ChartTip.Height = 28;
    57                 ChartTip.Renderer.Handler = "this.setTitle(storeItem.get('Name') + ': ' + storeItem.get('" + item.Key + "'));";
    58                 radarseries.Tips = ChartTip;
    59                 Chart.Series.Add(radarseries);
    60             }
    61             Chart.Axes.Add(ra);
    62             Store Store = new Ext.Net.Store();
    63             Store.Model.Add(ExtModel);
    64             Store.Data = DataList;
    65             Store.AutoDataBind = true;
    66             Chart.Store.Add(Store);
    67 
    68             Ext.Net.Panel Panelp = new Ext.Net.Panel();
    69             Panelp.Border = false;
    70             Panelp.Height = 560;
    71             Panelp.Width = 960;
    72             Panelp.Add(Chart);
    73             return Panelp;
    74         }

    图表总结

    和雷达图一样,其他图表也是类似的定义,只是属性不同而已。具体可参考ext.net 提供的demo http://examples.ext.net/#/Chart/Area/Basic/

    小白在项目中用到的其他优秀的图表插件

    fashion chart

    http://www.fusioncharts.com/

    Highcharts

    http://www.highcharts.com/

    这两款都是比较优秀的图表插件。当然就雷达图而言,小白觉得还是ext的比较漂亮。

    更多图表请看小白的博文 http://www.cnblogs.com/WangJinYang/archive/2012/06/19/2554594.html

    欢迎博友的意见和建议。

  • 相关阅读:
    地铁线路问题分析
    软件工程大作业(社团管理系统)-个人总结报告
    第九组_社团管理系统_原型相关文档
    北京地铁线路出行和规划
    地铁线路规划
    WC 个人项目 ( node.js 实现 )
    自我介绍 + 软工5问
    软工个人项目(Java实现)
    自我介绍+软工五问
    结对编程(前后端分离)
  • 原文地址:https://www.cnblogs.com/WangJinYang/p/3500201.html
Copyright © 2020-2023  润新知