DevExpress 自定义图表导出菜单

来源:互联网 发布:mac里什么浏览器最流畅 编辑:程序博客网 时间:2024/05/16 19:22

具体效果如下:

 

1、前端显示界面源码

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ChartToolBar.ascx.cs" Inherits="Controls_ChartToolBar" %><%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1, Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"    Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dxe" %><%@ Register assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxNavBar" tagprefix="dxe" %><%@ Register assembly="DevExpress.Web.v11.1, Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxMenu" tagprefix="dxm" %><center>    <dxm:ASPxMenu SkinID="ChartDemoToolbar" ID="mnuToolbar" runat="server" ClientInstanceName="mnuToolbar" ApplyItemStyleToTemplates="True">        <Items>            <dxm:MenuItem Name="mnuPrint" Text="" ToolTip="打印图表">                <Image Url="~/Images/Toolbar/BtnPrint.png" />            </dxm:MenuItem>            <dxm:MenuItem Name="mnuSaveToDisk" Text="" ToolTip="导出保存图表" BeginGroup="True">                <Image Url="~/Images/Toolbar/BtnSave.png" />            </dxm:MenuItem>            <dxm:MenuItem Name="mnuSaveToWindow" Text="" ToolTip="导出图表到新窗口">                <Image Url="~/Images/Toolbar/BtnSaveWindow.png" />            </dxm:MenuItem>            <dxm:MenuItem Name="mnuFormat"><Template>                <dxe:ASPxComboBox runat="server" Width="60px" ValueType="System.String" ID="cbFormat" SelectedIndex="0" ClientInstanceName="cbFormat">                    <Items>                        <dxe:ListEditItem Value="pdf" Text="pdf" />                        <dxe:ListEditItem Value="xls" Text="xls" />                        <dxe:ListEditItem Value="png" Text="png" />                        <dxe:ListEditItem Value="jpeg" Text="jpeg" />                        <dxe:ListEditItem Value="bmp" Text="bmp" />                        <dxe:ListEditItem Value="tiff" Text="tiff" />                        <dxe:ListEditItem Value="gif" Text="gif" />                    </Items>                </dxe:ASPxComboBox>            </Template></dxm:MenuItem>            <dxm:MenuItem Name="mnuLblAppearance" BeginGroup="True">                <Template><dxe:ASPxLabel ID="lblAppearance" Text="图表外观:" runat="server" /></Template>            </dxm:MenuItem>            <dxm:MenuItem Name="mnuAppearance"><Template>                <dxe:ASPxComboBox runat="server" Width="120px" ValueType="System.String" ID="cbAppearance" ClientInstanceName="cbAppearance">                    <ClientSideEvents SelectedIndexChanged="function(s, e) { WebChart.PerformCallback("Appearance"); }" />                </dxe:ASPxComboBox>            </Template></dxm:MenuItem>            <dxm:MenuItem Name="mnuLblPalette">                <Template><dxe:ASPxLabel ID="lblPalette" Text="颜色:" runat="server"/></Template>            </dxm:MenuItem>            <dxm:MenuItem Name="mnuPalette"><Template>                <dxe:ASPxComboBox runat="server" Width="120px" ValueType="System.String" ID="cbPalette" ClientInstanceName="cbPalette">                    <ClientSideEvents SelectedIndexChanged="function(s, e) { WebChart.PerformCallback("Palette"); }" />                </dxe:ASPxComboBox>            </Template></dxm:MenuItem>        </Items>        <ClientSideEvents ItemClick="function(s, e) {    if (e.item.name == 'mnuPrint')    WebChart.Print();    if (e.item.name == 'mnuSaveToDisk')        WebChart.SaveToDisk(cbFormat.GetText());    if (e.item.name == 'mnuSaveToWindow')        WebChart.SaveToWindow(cbFormat.GetText());}" />    </dxm:ASPxMenu></center>

2、后台cs代码

using System;using System.Collections.Generic;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using DevExpress.XtraCharts.Web;using DevExpress.Web.ASPxEditors;public partial class Controls_ChartToolBar : System.Web.UI.UserControl{    const string appearanceKey = "appearanceKey";    const string paletteKey = "paletteKey";    public WebChartControl webChartControl;    ASPxComboBox cbAppearance;    ASPxComboBox cbPalette;    protected void Page_Load(object sender, EventArgs e)    {    }    void webChartControl_CustomCallback(object sender, CustomCallbackEventArgs e)    {        if (webChartControl != null)        {            switch (e.Parameter)            {                case "Palette":                    if (cbPalette != null)                    {                        webChartControl.PaletteName = cbPalette.Text;                        Page.Session[paletteKey] = cbPalette.Text;                    }                    break;                case "Appearance":                    if (cbAppearance != null)                    {                        webChartControl.AppearanceName = cbAppearance.Text;                        Page.Session[appearanceKey] = cbAppearance.Text;                    }                    if (cbPalette != null)                    {                        cbPalette.SelectedIndex = cbPalette.Items.IndexOfText(webChartControl.PaletteName);                        Page.Session[paletteKey] = cbPalette.Text;                    }                    break;            }        }    }    void PrepareComboBox(ASPxComboBox comboBox, string[] items, string defaultItem)    {        comboBox.Items.Clear();        comboBox.Items.AddRange(items);        comboBox.SelectedIndex = defaultItem != null ? comboBox.Items.IndexOfText(defaultItem) : 0;    }    void SetWebChartControl(WebChartControl webChartControl)    {        if (this.webChartControl != null)            this.webChartControl.CustomCallback -= new CustomCallbackEventHandler(webChartControl_CustomCallback);        this.webChartControl = webChartControl;        if (webChartControl != null)        {            if (string.IsNullOrEmpty(webChartControl.ClientSideEvents.EndCallback))                webChartControl.ClientSideEvents.EndCallback = "function (s, e) { SetPaletteComboBox(s, e); }";            else            {                int index = webChartControl.ClientSideEvents.EndCallback.LastIndexOf('}');                webChartControl.ClientSideEvents.EndCallback = webChartControl.ClientSideEvents.EndCallback.Insert(index, "\tSetPaletteComboBox(s, e);\n");            }            webChartControl.CustomCallback += new CustomCallbackEventHandler(webChartControl_CustomCallback);            string currentAppearanceName = Page.Session[appearanceKey] as string;            if (!string.IsNullOrEmpty(currentAppearanceName))                webChartControl.AppearanceName = currentAppearanceName;            string currentPaletteName = Page.Session[paletteKey] as string;            if (!string.IsNullOrEmpty(currentPaletteName))                webChartControl.PaletteName = currentPaletteName;            if (cbAppearance != null)                PrepareComboBox(cbAppearance, webChartControl.GetAppearanceNames(), webChartControl.AppearanceName);            if (cbPalette != null)                PrepareComboBox(cbPalette, webChartControl.GetPaletteNames(), webChartControl.PaletteName);        }    }    protected void Page_Init(object sender, EventArgs e)    {        Page.ClientScript.RegisterClientScriptBlock(typeof(string), "SetPaletteComboBox", "<script type=\"text/javascript\">\n<!--\nfunction SetPaletteComboBox(s, e) {\n\tfor (var i = 0; i < cbPalette.GetItemCount(); i++) {\n\t\tif (cbPalette.GetItem(i).value == s.GetChart().paletteName) {\n\t\t\tcbPalette.SetSelectedIndex(i);\n\t\t}\n\t}\n}\n// -->\n</script>");        mnuToolbar.AutoSeparators = DevExpress.Web.ASPxMenu.AutoSeparatorMode.None;        webChartControl = Page.FindControl("WebChartControl1") as WebChartControl;        if (webChartControl != null)        {            DevExpress.Web.ASPxMenu.MenuItem mnuAppearance = mnuToolbar.Items.FindByName("mnuAppearance");            if (mnuAppearance != null)                cbAppearance = mnuAppearance.FindControl("cbAppearance") as ASPxComboBox;            DevExpress.Web.ASPxMenu.MenuItem mnuPalette = mnuToolbar.Items.FindByName("mnuPalette");            if (mnuPalette != null)                cbPalette = mnuPalette.FindControl("cbPalette") as ASPxComboBox;            SetWebChartControl(webChartControl);        }    }}



原创粉丝点击