具体效果如下:
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);
}
}
}