使用部分:
<div>
<asp:Chart ID="Chart1" runat="server">
<Legends>
<asp:Legend Name="Legend1" >
</asp:Legend>
</Legends>
<Series>
<asp:Series Name="Series1">
</asp:Series>
<asp:Series Name="Series2" >
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1">
</asp:ChartArea>
</ChartAreas>
<Titles>
<asp:Title Name="Title1">
</asp:Title>
</Titles>
</asp:Chart>
</div>
后台cs:
//设置图片高度,宽度
Chart1.Height = 500;
Chart1.Width = 1200;
//title属性说明
Chart1.Titles.Add("拱墅公安局各部门破案量");
//边框样式设置
Chart1.ChartAreas["ChartArea1"].BorderColor = Color.Black;
Chart1.ChartAreas["ChartArea1"].BorderDashStyle = ChartDashStyle.Solid;
Chart1.ChartAreas["ChartArea1"].BorderWidth = 2;
//X轴数据
ArrayList XTitle = new ArrayList();
XTitle.Add("康桥");
XTitle.Add("半山");
XTitle.Add("祥符");
XTitle.Add("上塘");
XTitle.Add("米市巷");
XTitle.Add("湖墅");
XTitle.Add("小河");
XTitle.Add("拱宸桥");
XTitle.Add("和睦");
XTitle.Add("大关");
//Y轴数据(需确保X轴与Y轴的数据量相等)这里是第一根“柱子的数据”
ArrayList[] ChartData = new ArrayList[1];
ChartData[0] = new ArrayList();
ChartData[0].Add(80);
ChartData[0].Add(40);
ChartData[0].Add(30);
ChartData[0].Add(24);
ChartData[0].Add(22);
ChartData[0].Add(20);
ChartData[0].Add(16);
ChartData[0].Add(16);
ChartData[0].Add(16);
ChartData[0].Add(16);
//为图表绑定数据
Chart1.Series["Series1"].Points.DataBindXY(XTitle, ChartData);
//Y轴数据(需确保X轴与Y轴的数据量相等) 这里是第二根“柱子的数据”
ArrayList[] ChartData1 = new ArrayList[1];
ChartData1[0] = new ArrayList();
ChartData1[0].Add(160);
ChartData1[0].Add(80);
ChartData1[0].Add(60);
ChartData1[0].Add(48);
ChartData1[0].Add(44);
ChartData1[0].Add(40);
ChartData1[0].Add(32);
ChartData1[0].Add(32);
ChartData1[0].Add(32);
ChartData1[0].Add(32);
Chart1.Series["Series2"].Points.DataBindXY(XTitle, ChartData1);
//设置每个柱形的文字标识 第一根“柱子”
for (int i = 0; i < Chart1.Series["Series1"].Points.Count; i++)
{
Chart1.Series["Series1"].Points[i].Label = ChartData[0][i].ToString();
}
//第二根“柱子”
for (int i = 0; i < Chart1.Series["Series2"].Points.Count; i++)
{
Chart1.Series["Series2"].Points[i].Label = ChartData[0][i].ToString();
}
//设置图例说明
Chart1.Series["Series1"].LegendText = "去年";
Chart1.Series["Series2"].LegendText = "今年";
//标识x,y轴
Chart1.ChartAreas["ChartArea1"].AxisX.Title = "部门";
Chart1.ChartAreas["ChartArea1"].AxisY.Title = "数量";
//X轴数据显示间隔
Chart1.ChartAreas["ChartArea1"].AxisX.Interval = 1.0;
Chart1.ChartAreas["ChartArea1"].AxisY.Interval = 25.0;
问题及解决办法:
问题:为 ChartImg.axd 执行子请求时出错
解决办法:
解决方法一:
1. 修改web.Config
view plaincopy to clipboardPRint?
<add key="ChartImageHandler" value="storage=file;timeout=20;url=~/TempImages/;" />
<add key="ChartImageHandler" value="storage=file;timeout=20;url=~/TempImages/;" />
将其中的 dir=c:\TempImages\ 的绝对路径 修改外 url=~/TempImages/ 相对路径 (前提条件:网站文件中必须包含 TempImages文件夹)
2. 修改
view plaincopy to clipboardprint?
<add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
<add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
为
view plaincopy to clipboardprint?
<add path="ChartImg.axd" verb="GET,POST,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
<add path="ChartImg.axd" verb="GET,POST,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
3. 修改
view plaincopy to clipboardprint?
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
为:
view plaincopy to clipboardprint?
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
解决方法二:
打开*.aspx页面,删除原来MSCchart产生的网页代码(如果你的MSChart控件已经都设置好了很多项觉得删除可惜,就剪切吧)
然后切换到设计界面,在工具箱中选择MSChart控件,重新拖入进去,就可以自动在web.config中添加上面代码
本人感觉采用第二个解决办法方便些