zoukankan      html  css  js  c++  java
  • 关于mschart控件在mvc项目中的webform里面显示不出图片的问题

    最近一个项目,因项目需要,需要在mvc3中使用webform。

    需要用到图表来显示时时温度,而我选择使用微软的mschart。

    mschart控件在webform里面显示正常,如下图:

    但是放在mvc的webform里图片却显示不出来,放在mvc里面却又可以显示出来。经过几个小时的查找,发现自己忽略了细节,解决方法是在Global.asax中忽略webform文件夹路径的路由,图片就显示出来了,代码如下:

       public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                // 忽略对 ManagerWebForm 路径的路由
                routes.IgnoreRoute("ManagerWebForm/{weform}");

    图标页面StationTemperature.aspx的代码如下:

    <%@ Page Title="" Language="C#" MasterPageFile="~/ManagerWebForm/Manager.Master"
        AutoEventWireup="true" CodeBehind="StationTemperature.aspx.cs" Inherits="ChellonaMobileStationElectricity.ManagerWebForm.StationTemperature" %>
    
    <%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <asp:Chart ID="Chart1" runat="server" ImageLocation="~/TempImages/ChartPic_#SEQ(300,3)"
            Palette="BrightPastel" ImageType="Png" BorderlineDashStyle="Solid" BackSecondaryColor="White"
            BackGradientStyle="TopBottom" BackColor="#D3DFF0" BorderColor="26, 59, 105">
            <Legends>
                <asp:Legend IsTextAutoFit="False" Name="Default" BackColor="Transparent" Font="Trebuchet MS, 8.25pt, style=Bold">
                </asp:Legend>
            </Legends>
            <BorderSkin SkinStyle="Emboss"></BorderSkin>
            <Series>
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid"
                    BackSecondaryColor="White" BackColor="64, 165, 191, 228" ShadowColor="Transparent"
                    BackGradientStyle="TopBottom">
                    <Area3DStyle Rotation="15" Perspective="15" Inclination="15" IsRightAngleAxes="False"
                        WallWidth="0" IsClustered="False"></Area3DStyle>
                    <AxisY LineColor="64, 64, 64, 64">
                        <LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" />
                        <MajorGrid LineColor="64, 64, 64, 64" />
                    </AxisY>
                    <AxisX LineColor="64, 64, 64, 64">
                        <LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" />
                        <MajorGrid LineColor="64, 64, 64, 64" />
                    </AxisX>
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>
    </asp:Content>

    StationTemperature.aspx.cs的代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Drawing;
    using System.Data;
    using System.Web.UI.DataVisualization.Charting;
    
    namespace ChellonaMobileStationElectricity.ManagerWebForm
    {
        public partial class StationTemperature : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    BindChart();
                }
            }
    
            private void BindChart()
            {
                Chart1.Width = 800;
                Chart1.Height = 500;
                Chart1.BackColor = Color.Honeydew;//图表背景色
                Chart1.Titles.Add(DateTime.Now.ToLongDateString() + " XX 基站温度时时曲线图");//图表标题
    
                string sql = "select Temperature,CONVERT(varchar(5),CreateTime,108)as minutes from StationTemperature";
    
                DataSet ds = DB.getdataset(sql);
                Chart1.DataBindTable(ds.Tables[0].DefaultView, "minutes");
    
                //注意数据绑定
                Chart1.Series[0].ChartType = SeriesChartType.Spline;//指明是曲线图      
                Chart1.Series[0].BorderWidth = 3;
                Chart1.Series[0].ShadowOffset = 3;
                Chart1.Series[0].IsValueShownAsLabel = true;//是否显示数据
                Chart1.Series[0].IsVisibleInLegend = false;//是否显示数据说明
                Chart1.Series[0].MarkerStyle = MarkerStyle.Circle;//标志大小
                Chart1.Series[0].MarkerSize = 8;//标志大小
    
    
    
                //Chart1.ChartAreas[0].AxisX.LineColor = Color.Blue;//X轴颜色
                //Chart1.ChartAreas[0].AxisY.LineColor = Color.Blue;//Y轴颜色  
                Chart1.ChartAreas[0].AxisX.LineWidth = 2;
                Chart1.ChartAreas[0].AxisY.LineWidth = 2;
                Chart1.ChartAreas[0].AxisY.Title = "温度(度数)";//Y轴标题
                Chart1.ChartAreas[0].AxisX.Title = "时间(分钟)";
    
    
                #region 解决mschartX坐标显示不全的问题
                Chart1.ChartAreas[0].AxisX.Interval = 1;//设置X轴坐标的间隔为1
                Chart1.ChartAreas[0].AxisX.IntervalOffset = 1;//设置X轴坐标偏移为1
                Chart1.ChartAreas[0].AxisX.LabelStyle.IsStaggered = false;//设置是否交错显示,比如数据多的时候分成两行来显示
                #endregion
            }
        }
    }

    效果图如上。

  • 相关阅读:
    Python 存储引擎 数据类型 主键
    Python 数据库
    Python 线程池进程池 异步回调 协程 IO模型
    Python GIL锁 死锁 递归锁 event事件 信号量
    Python 进程间通信 线程
    Python 计算机发展史 多道技术 进程 守护进程 孤儿和僵尸进程 互斥锁
    Python 异常及处理 文件上传事例 UDP socketserver模块
    Python socket 粘包问题 报头
    Django基础,Day7
    Django基础,Day6
  • 原文地址:https://www.cnblogs.com/bianlan/p/2510915.html
Copyright © 2011-2022 走看看