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的更多相关文章

  1. Hightcharts动态创建series

    第一种方法: 申明options时动态设置series,然后再创建chart对象 代码如下: <html> <head> <title>Highcharts Exa ...

  2. 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中

    http://blog.csdn.net/mazhaojuan/article/details/8599167 先看一下我要实现的功能界面: 这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转 ...

  3. 初探原生js根据json数据动态创建table

    初探原生js根据json数据动态创建table 小生以实习生的职位进入了一家非纯软件的公司做asp.net开发,大半个月下来发现公司里居然没有前端工程师,这令我很诧异,跟着公司做项目,发现前端后台没有 ...

  4. Java中如何动态创建接口的实现

    有很多应用场景,用到了接口动态实现,下面举几个典型的应用: 1.mybatis / jpa 等orm框架,可以在接口上加注解进行开发,不需要编写实现类,运行时动态产生实现. 2.dubbo等分布式服务 ...

  5. 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 ...

  6. JavaScript dom 动态创建标记

    此前的大多数DOM都是用来查找元素,getElementById和getElementsByTagName都可以方便快捷的找到文档中的某个或者某些特定的元素节点,这些元素随后可以用诸如setAttri ...

  7. ios动态创建类Class

    [Objective-C Runtime动态加载]---动态创建类Class 动态创建类Class,动态添加Class成员变量与成员函数,动态变量赋值与取值,动态函数调用等方法 a.使用objc_al ...

  8. winform 用户控件、 动态创建添加控件、timer控件、控件联动

    用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...

  9. python动态创建类的声明

    动态创建类的声明 使用内置函数type,原型:class type(name, bases, dict)name是类的名字,相当于__class__bases是类的基类,元组,可以有多个基类,但是基类 ...

随机推荐

  1. linux与windows 通过SecureCRT进行文件传输方式

    linux与windows 通过SecureCRT进行文件传输方式 方式一:lrzsz是一款在Linux里可代替ftp上传和下载的程序.(小文件推荐,以4G为界限) # rz -bash: rz: c ...

  2. mvn库

    http://maven.aliyun.com/nexus/content/groups/public/ http://mvnrepository.com/http://search.maven.or ...

  3. 【转】Android ImageView的scaleType属性与adjustViewBounds属性

    ImageView的scaleType的属性有好几种,分别是matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fi ...

  4. ML 逻辑回归 Logistic Regression

    逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...

  5. vim 乱码问题的方法参考

    linux 中设置当前用户的系统默认编码为 UTF-8 格式解决 vim 乱码问题的方法参考  任侠  2013-05-02 11:58  电脑基础  抢沙发  13,732 views  在使用 l ...

  6. MyBatis之xml配置配置文件(一)(xml配置文件)

    一.properties标签 <properties resource="jdbc.properties"></properties> 使用properti ...

  7. EXCEL中,怎样查看一个工作簿中有几个工作表?

    EXCEL中,怎样查看一个工作簿中有几个工作表 有几个EXCEL文件,每个文件(工作簿)中都有上百个工作表, 怎样可以一次性查看一个簿包含几个表? 目前好像没有直接可以看到有多少张工作表的按钮,这就需 ...

  8. iOS学习笔记之正则表达式

    前言 基本上每个 App 都有登录注册功能,在登录注册时需要验证用户所输入的内容是否符合规定:有时要在字符串中查找并截取符合要求的字符串,这时就需要用到正则表达式.正则表达式看起来晦涩难懂,没有什么规 ...

  9. ES6-Set和Map数据结构学习笔记

    Set和Map数据结构 Set 基本用法 ES6提供了新的数据结构--Set,类似于数组,但是成员的值是唯一的,没有重复的值,Set本身是一种构造函数,用来生成Set数据结构 var s = new ...

  10. 将【恢复和重新安装Windows】的介质指定到硬盘

    步骤: 1. 双击Win8.1/Win10安装镜像,将它载入到虚拟光驱(例子被载入到i:盘) 2. 将Win8.1/Win10安装镜像中sources\install.wim文件复制到一个非系统盘里. ...