c# Chart 服务器端动态创建ChartArea
1 aspx
<x:ContentPanel ShowBorder="true" ShowHeader="false" ID="ContentPanel1" runat="server" >
<asp:Chart ID="ChartData" runat="server" Width="1600px" Height="600px" >
</asp:Chart>
</x:ContentPanel>
2 aspx.cs
private void LoadSeriesBySearch()
{
List<Model.Devices> list = new List<Model.Devices>();
if (ddlDevice.SelectedItem != null)
{
string[] devIds = ddlDevice.SelectedValueArray;
list = new BLL.Devices().GetModelList(string.Format(" ID IN ({0}) ", string.Join(",", devIds)));
}
else
{
list = GetDevicesByUserID(CurrentUser.ID);
} ChartData.Series.Clear();
ChartData.ChartAreas.Clear();
ChartData.Titles.Add("设备数据统计");
ChartArea area = new ChartArea();
#region 初始化area
area.BackGradientStyle = GradientStyle.DiagonalLeft;
area.AxisX.Title = "时间";
area.AxisY.Title = "压力值";
area.AxisX.MajorGrid.LineWidth = ;
area.AxisY.MajorGrid.LineWidth = ;
area.AxisX.LabelStyle.Font = new Font(FontFamily.GenericSansSerif, );
area.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
area.AxisY.MajorGrid.LineColor = Color.LightSlateGray;
area.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
ChartData.ChartAreas.Add(area);
#endregion
Color[] cols = { Color.Black, Color.Blue, Color.Brown, Color.Coral, Color.Cyan, Color.Gold, Color.Gray, Color.Green, Color.Lime, Color.Navy };
int i = ;
foreach (Model.Devices dev in list)
{
//创建序列
Series ser = new Series(dev.Name, );
#region 初始化Series
ser.Name = dev.Name;
ser.ChartArea = area.Name;
ser.ChartType = SeriesChartType.Line;
ser.XValueMember = "RecordDate";
ser.YValueMembers = "Pressure";
ser.MarkerBorderColor = Color.BlueViolet;
ser.MarkerBorderWidth = ;
ser.MarkerColor = Color.Red;
ser.MarkerSize = ;
ser.MarkerStyle = MarkerStyle.Diamond;
ser.LabelForeColor = Color.Black;
#region 设置序列的颜色
if (i == )
{
i = ;
}
ser.Color = cols[i];
i++;
#endregion
ser.ShadowColor = Color.Yellow;
ser.ToolTip = "Pressure:#VAL\r\nTime:#VALX";
ser.SmartLabelStyle.Enabled = false;
ser.BorderWidth = ;
ser.ShadowOffset=;
ser.IsVisibleInLegend = true;
ser.IsValueShownAsLabel = true;
ser.IsXValueIndexed = false;
//ser.Legend = dev.Name;
Legend leg = new Legend();
leg.Name = dev.Name;
leg.BackColor = Color.Transparent;
leg.Docking = Docking.Right;
leg.Font = new Font(FontFamily.GenericSansSerif, );
leg.Alignment = StringAlignment.Near;
//leg.Position = new ElementPosition(-100,0,20,20);
ChartData.Legends.Add(leg);
#endregion
//创建点
List<Model.DeviceDatas> dds = new List<Model.DeviceDatas>();
if ((dpStartDate.SelectedDate != null) && (dpEndDate.SelectedDate != null))
{
dds = new BLL.DeviceDatas().GetModelList(string.Format(" DEVICEID={0} AND RECORDDATE BETWEEN '{1}' AND '{2}' ", dev.ID, dpStartDate.SelectedDate, dpEndDate.SelectedDate));
}
else
{
dds = new BLL.DeviceDatas().GetModelList(string.Format(" DEVICEID={0} ", dev.ID));
}
foreach (Model.DeviceDatas dd in dds)
{
ser.Points.AddXY(dd.RecordDate, dd.Pressure);
}
ChartData.Series.Add(ser);
}
} //获得当前用户的设备集合
private List<Model.Devices> GetDevicesByUserID(int p)
{
List<Model.Devices> list = new List<Model.Devices>();
if (CurrentUser.IsSysUser == true)
{
list = new BLL.Devices().GetListTop("", );
}
else
{
//如果存在客户、不存在项目,查询该客户下的所有设备数据
if (CheckForeignIDIsExist(CurrentUser.CustomerID) && !CheckForeignIDIsExist(CurrentUser.ProjectID))
{
list = new BLL.Devices().GetDevicesListByCustomerID((int)CurrentUser.CustomerID, "", "", , );
}
//如果存在客户、存在项目、不存在站点,查询该项目下的设备数据
else if (CheckForeignIDIsExist(CurrentUser.CustomerID) && CheckForeignIDIsExist(CurrentUser.ProjectID) && !CheckForeignIDIsExist(CurrentUser.SiteID))
{
list = new BLL.Devices().GetDevicesListByProjectID((int)CurrentUser.CustomerID, "", "", , );
}
//如果存在客户、项目、站点,查询该站点下的设备数据
else if (CheckForeignIDIsExist(CurrentUser.CustomerID) && CheckForeignIDIsExist(CurrentUser.ProjectID) && CheckForeignIDIsExist(CurrentUser.SiteID))
{
list = new BLL.Devices().GetListTop(string.Format(" SiteID={0} ", CurrentUser.SiteID),);
}
}
return list;
}
3 error:
FineUI的控件
<x:Button runat="server" ID="btnSearch" Text="搜索" Icon="SystemSearch" OnClick="btnSearch_Click" />
可以进入服务器执行,但是server执行之后,并没有异步更新到client。
在FineUI中需要设置其异步区域:
AjaxAspnetControls="ChartData"
<x:PageManager ID="PageManager1" AutoSizePanelID="Panel1" AjaxAspnetControls="ChartData" runat="server" />
4 更进一步,应该写jquery进行异步更新,在server中借助第三方chart库动态创建一个曲线图(或者自己画一个Bitmap曲线图),然后返回给client的某个区域div。
c# Chart 服务器端动态创建ChartArea的更多相关文章
- Hightcharts动态创建series
第一种方法: 申明options时动态设置series,然后再创建chart对象 代码如下: <html> <head> <title>Highcharts Exa ...
- 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中
http://blog.csdn.net/mazhaojuan/article/details/8599167 先看一下我要实现的功能界面: 这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转 ...
- 初探原生js根据json数据动态创建table
初探原生js根据json数据动态创建table 小生以实习生的职位进入了一家非纯软件的公司做asp.net开发,大半个月下来发现公司里居然没有前端工程师,这令我很诧异,跟着公司做项目,发现前端后台没有 ...
- Java中如何动态创建接口的实现
有很多应用场景,用到了接口动态实现,下面举几个典型的应用: 1.mybatis / jpa 等orm框架,可以在接口上加注解进行开发,不需要编写实现类,运行时动态产生实现. 2.dubbo等分布式服务 ...
- ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...
- JavaScript dom 动态创建标记
此前的大多数DOM都是用来查找元素,getElementById和getElementsByTagName都可以方便快捷的找到文档中的某个或者某些特定的元素节点,这些元素随后可以用诸如setAttri ...
- ios动态创建类Class
[Objective-C Runtime动态加载]---动态创建类Class 动态创建类Class,动态添加Class成员变量与成员函数,动态变量赋值与取值,动态函数调用等方法 a.使用objc_al ...
- winform 用户控件、 动态创建添加控件、timer控件、控件联动
用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...
- python动态创建类的声明
动态创建类的声明 使用内置函数type,原型:class type(name, bases, dict)name是类的名字,相当于__class__bases是类的基类,元组,可以有多个基类,但是基类 ...
随机推荐
- Hadoop程序基础模板
分布式编程相对复杂,而Hadoop本身蒙上大数据.云计算等各种面纱,让很多初学者望而却步.可事实上,Hadoop是一个很易用的分布式编程框架,经过良好封装屏蔽了很多分布式环境下的复杂问题,因此,对普通 ...
- android开发之如何将一般应用变身系统级应用【转】
本文转载自:https://blog.csdn.net/zanelove/article/details/43953743 前提: ROOT过的手机 1,把代码编写好后,打包导出apk,copy到手机 ...
- IDEA中集成JRebel插件
下载下面2个插件 jr-ide-intellij-6.4.3_13-16.zip --- 官网的jar(地址:https://plugins.jetbrains.com/plugin/4441-jre ...
- HTML5 画布canvas
SVG的<defs> <symbols> 元素用于预定义一个元素使其能够在SVG图像中重复使用 <svg xmlns="http://www.w3.org/20 ...
- 最长k可重区间集
P3358 最长k可重区间集问题 P3357 最长k可重线段集问题 P3356 火星探险问题 P4012 深海机器人问题 P3355 骑士共存问题 P2754 [CTSC1999]家园 题目描述 ...
- 执行Oracle存储过程报权限不足的解决方法
当前Oracle用户sofa拥有connect.dba.resource的角色权限,但奇怪的是却没有执行Oracle Procedure的权限.后来通过查找资料发现:如果sofa用户需要执行Proce ...
- gulp的安装和配置
gulp的安装和使用方法 1先是有node为前提的, 2安装淘宝镜像 2.1因为很多npm包都是国外的,所以安装起来很慢,所以我们可以利用淘宝的镜像服务器来进行安装后续的包,速度和成功率会高很多. ...
- JavaWeb -- 内省—beanutils工具包 的使用
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写. Beanu ...
- Nagios的基本安装配置
//////////////////////nagios//////////////////////nagios原理:http://www.linuxidc.com/Linux/2013-11/927 ...
- ActiveMQ消费者接收消息的过程
[http://manzhizhen.iteye.com/blog/2094130] org.apache.activemq.ActiveMQMessageConsumer同步接收