ASP.NET mschart使用小结

使用部分:

 <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中添加上面代码

本人感觉采用第二个解决办法方便些

原文地址:https://www.cnblogs.com/swarb/p/9924316.html