DevExpress 自定义图表导出菜单

具体效果如下:

 

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);
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mushroom_lb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值