本指南演示了如何把 WebChartControl 添加到 ASPxCallbackPanel (在其 callback 期间)。

CodeCentralShow Me

在 DevExpress Code Central 数据库中可以找到完整的示例项目,网址是 http://www.devexpress.com/example=E568。 取决于目标平台类型 (ASP.NET、WinForms 等),可以在线运行本示例,或者下载自动可执行的示例。

  1. 新建一个或者打开现有的 ASP.NET Web 应用程序 (Visual Studio 2005、2008 或 2010)。

  2. 把所需的 程序集 添加到项目的“引用”列表中。

    注意,如果更喜欢自动添加程序集 (通过把 WebChartControl 实例拖放到页面上),那么这会影响 Web 应用程序的 Web.config 文件。 要了解所作出的更改,请参阅 添加 Web 图表

  3. 切换到 Default.aspx 页面的 设计 视图,并从 DX.10.2: Common Controls 工具箱标签页中,把 ASPxButton 控件拖放到页面上。

  4. 然后,单击按钮的智能标记。 在被调用的操作列表中,禁用 AutoPostBack 属性,并单击 Client-Side Events(客户端事件)... 链接。

    在被调用的对话框中,从客户端 Click 事件处理程序中,调用 callback 面板的 PerformCallback()

    为了应用更改,并退出对话框,单击 OK 按钮。

  5. 现在,从 DX.10.2: Navigation & Layout 工具箱标签页中,把 ASPxCallbackPanel 控件拖放到页面上。

  6. 把它的 ClientInstanceName 属性设置为 panel,并以下列方式接管它的 Callback 事件。

    C#CopyCode image复制代码
    using System;
    using DevExpress.XtraCharts;
    using DevExpress.XtraCharts.Web;
    using DevExpress.Web.ASPxClasses;
    using DevExpress.Web.ASPxCallbackPanel;
    // ...
    
    protected void ASPxCallbackPanel1_Callback(object sender, 
    CallbackEventArgsBase e) {
        WebChartControl wbc = new WebChartControl();
    
        wbc.Series.Add(new Series("Series", ViewType.Line));
        wbc.Series[0].ArgumentScaleType = ScaleType.DateTime;
        wbc.Series[0].ValueScaleType = ScaleType.Numerical;
    
        Random r = new Random();
        for (int i = 0; i < 5; i++) {
        wbc.Series[0].Points.Add(new SeriesPoint(DateTime.Today.AddDays(i),
            ((int)((r.NextDouble() * 100) * 10)) / 10.0));
        }
    
        wbc.Width = ((ASPxCallbackPanel)sender).Width;
        ((ASPxCallbackPanel)sender).Controls.Add(wbc);
    }
    
    Visual BasicCopyCode image复制代码
    Imports System
    Imports DevExpress.XtraCharts
    Imports DevExpress.XtraCharts.Web
    Imports DevExpress.Web.ASPxClasses
    Imports DevExpress.Web.ASPxCallbackPanel
    ' ...
    
    Protected Sub ASPxCallbackPanel1_Callback(ByVal sender As Object, _ 
    ByVal e As CallbackEventArgsBase)
        Dim wbc As New WebChartControl()
    
        wbc.Series.Add(New Series("Series", ViewType.Line))
        wbc.Series(0).ArgumentScaleType = ScaleType.DateTime
        wbc.Series(0).ValueScaleType = ScaleType.Numerical
    
        Dim r As New Random()
        For i As Integer = 0 To 4
            wbc.Series(0).Points.Add(New SeriesPoint(DateTime.Today.AddDays(i), _ 
            (CInt(Fix((r.NextDouble() * 100) * 10))) / 10.0))
        Next i
    
        wbc.Width = (CType(sender, ASPxCallbackPanel)).Width
        CType(sender, ASPxCallbackPanel).Controls.Add(wbc)
    End Sub
    

运行此应用程序,并查看结果。

Expand image参阅