Chart控件做报表读取数据速度慢,望有心人解决

来源:互联网 发布:赵j家人 知乎 编辑:程序博客网 时间:2024/05/30 05:16

protected void Page_Load(object sender, EventArgs e)
    {
        #region
        //2010-10-27 add
        Chart1.Width = 600;          //图片宽度  
        Chart1.Height = 400;         //图片高度  

        //建一个图表集合 显示ST供应商数据
        Series series = new Series();
        series.ChartType = SeriesChartType.Column;               //图标集类型,Line为直线,SpLine为曲线
        //series.Color = Color.Green;                              //线条颜色
        series.BorderWidth = 2;                                  //线条宽度
        series.ShadowOffset = 1;                                 //阴影宽度
        series.IsVisibleInLegend = false;                         //是否显示数据说明
        series.IsValueShownAsLabel = true;
        series.MarkerStyle = MarkerStyle.Diamond;               //线条上的数据点标志类型
        series.MarkerSize = 8;                                  // 标志的大小

        DataSet ds = GetDateByRB("ST");
        int count = ds.Tables[0].Rows.Count ;
        int[] date = new int[count];
        int[] kkk = new int[count];
        int m = 0;
        foreach (DataRow  dc in ds.Tables [0].Rows)
        {
            date[m] = Convert.ToInt32(dc[0]);
            kkk[m] = Convert.ToInt32(dc[2]);
            m++;
        }  
      
        for (int i = 0; i < date.Length; i++)
        {
            series.Points.AddXY(date[i], kkk[i]);
           
        }

        Chart1.Series.Add(series);             //把数据集添加到Chart1中


        //再建一个图表集合 显示RB供应商数据 .
        Series series1 = new Series();
        series1.ChartType = SeriesChartType.Column;               //图标集类型,Line为直线,SpLine为曲线
        //series1.Color = Color.Red;                             //线条颜色
        series1.BorderWidth = 2;                                  //线条宽度
        series1.ShadowOffset = 1;                                 //阴影宽度
        series1.IsVisibleInLegend = false;                         //是否显示数据说明
        series1.IsValueShownAsLabel = true;
        series1.MarkerStyle = MarkerStyle.Diamond;

        DataSet dsRB=GetDateByRB("RB");                         //供应商RB的数据集

        int countrb = dsRB.Tables[0].Rows.Count;                //将RB数据集中表里行的数量的值赋给countrb
        int[] dateRB = new int[countrb];                        //定义数组dateRB(日期),长度为countrb
        int[] numRB = new int[countrb];                         //定义数组numRB(数量),长度为countrb
        int mrb = 0;
        foreach (DataRow dr in dsRB.Tables[0].Rows)             //循环遍历供应商RB数据集表,将数据赋给数组dateRB和numRB
        {
            dateRB[mrb] = Convert.ToInt32(dr[0]);
            numRB[mrb] = Convert.ToInt32(dr[2]);
            mrb++;
        } 
        series1.MarkerSize = 8;
        for (int i = 0; i < dateRB.Length; i++)                 //循环输出图表series1中的时间和数量,X轴显示时间,Y轴显示数量
        {
            series1.Points.AddXY(dateRB[i], numRB[i]);
         
        }
        Chart1.Series.Add(series1);             //把数据集添加到Chart1中


        //建立第3个图标集合显示供应商HC数据
        Series series3 = new Series();
        series3.ChartType = SeriesChartType.Column;
        series1.BorderWidth = 2;                                  //线条宽度
        series1.ShadowOffset = 1;                                 //阴影宽度
        series1.IsVisibleInLegend = false;                         //是否显示数据说明
        series1.IsValueShownAsLabel = true;
        series1.MarkerStyle = MarkerStyle.Diamond;
        series1.MarkerSize = 8;

        DataSet dsHC = GetDateByRB("HC");
        int countHC = dsHC.Tables[0].Rows.Count;
        int[] dateHC = new int[countHC];
        int[] numHC = new int[countHC];
        int mHC = 0;
        foreach (DataRow dr in dsHC.Tables[0].Rows)
        {
            dateHC[mHC] = Convert.ToInt32(dr[0]);
            numHC[mHC] = Convert.ToInt32(dr[2]);
            mHC++;
        } 
        for (int i = 0; i < dateHC.Length; i++)
        {
            series3.Points.AddXY(dateHC[i], numHC[i]);
       
        }
        Chart1.Series.Add(series3);             //把数据集添加到Chart1中

       //xy轴
        Chart1.ChartAreas[0].AxisY.Title = "Number";
        Chart1.ChartAreas[0].AxisX.Title = "Date";
       

    }

    /// <summary>
    /// 数据库
    /// </summary>
    /// <param name="Carriercode">供应商名称</param>
    /// <returns>ds</returns>
    public DataSet GetDateByRB(string Carriercode)
    {
        string myCon = ConfigurationManager.ConnectionStrings["myConn"].ConnectionString;
        string cmdText = "select [month] , CarrierCode,Sum(number) Number from dbo.Demo where carriercode= '"+Carriercode+"'  group by [month], CarrierCode";
        SqlConnection con = new SqlConnection(myCon);
        SqlCommand com = new SqlCommand(cmdText, con);
        con.Open();
        DataSet ds = new DataSet();
        SqlDataAdapter sda = new SqlDataAdapter(com);
        sda.Fill(ds);
        return ds;
 
    }

原创粉丝点击