void BindYearChart()
    {
        ChartArea           chArea = Chart1.ChartAreas[0];
        DataPointCollection dpc    = Chart1.Series[0].Points;

        chArea.AxisX.Title             = "Year";
        chArea.AxisY.Title             = "Sale Amt";
        chArea.AxisY.LabelStyle.Format = "##,###";
        using (DBSampleEntities context = new DBSampleEntities())
        {
            var data = (from item in context.SaleInfoes
                        group item by item.SaleDate.Value.Year into g
                        select new { Year = g.Key, SaleAmt = g.Sum(x => x.SaleAmt) });

            foreach (var item in data)
            {
                dpc.AddXY(item.Year, item.SaleAmt);
            }
        }

        Series series = Chart1.Series[0];

        series.IsValueShownAsLabel = true;
        series.PostBackValue       = "#VALX";
        series.LabelFormat         = "##,###";
        series.LabelBackColor      = Color.White;
        ViewState["ChartMode"]     = "Year";
    }
    void GenerateData()
    {
        Random rand = new Random();

        using (DBSampleEntities context = new DBSampleEntities())
        {
            for (int i = 0; i < 1250; i++)
            {
                context.SaleInfoes.Add(new SaleInfo()
                {
                    SaleDate = DateTime.Now.AddDays(-1 * i), SaleAmt = rand.Next(100, 1000)
                });
            }
            context.SaveChanges();
        }
    }
    void BindQuarterChart(int year)
    {
        Dictionary <int, int> data = new Dictionary <int, int>();

        //Set X axis data
        for (int i = 1; i <= 4; i++)
        {
            data.Add(i, 0);
        }

        ChartArea           chArea = Chart1.ChartAreas[0];
        DataPointCollection dpc    = Chart1.Series[0].Points;

        chArea.AxisX.Title             = "Quarter";
        chArea.AxisY.Title             = "Sale Amt";
        chArea.AxisY.LabelStyle.Format = "##,###";

        using (DBSampleEntities context = new DBSampleEntities())
        {
            var amts = (from item in context.SaleInfoes
                        where item.SaleDate.Value.Year == year
                        group item by((item.SaleDate.Value.Month - 1) / 3) + 1 into g
                        select new { Quarter = g.Key, SaleAmt = g.Sum(x => x.SaleAmt) });

            //Set Y axis values
            foreach (var item in amts)
            {
                data[item.Quarter] = Convert.ToInt32(item.SaleAmt);
            }

            //Add points in chart
            foreach (int str in data.Keys)
            {
                dpc.AddXY("Q" + str, data[str]);
            }
        }
        Series series = Chart1.Series[0];

        series.IsValueShownAsLabel = true;
        series.PostBackValue       = "#VALX";
        series.LabelFormat         = "##,###";
        series.LabelBackColor      = Color.White;
        ViewState["ChartMode"]     = "Quarter";
    }
    void BindMonthChart(int quarter, int year)
    {
        Dictionary <int, int> data = new Dictionary <int, int>();

        //Set X axis data
        for (int i = 1; i <= 3; i++)
        {
            data.Add((quarter - 1) * 3 + i, 0);
        }
        ChartArea           chArea = Chart1.ChartAreas[0];
        DataPointCollection dpc    = Chart1.Series[0].Points;

        chArea.AxisX.Title             = "Month";
        chArea.AxisY.Title             = "Sale Amt";
        chArea.AxisY.LabelStyle.Format = "##,###";
        using (DBSampleEntities context = new DBSampleEntities())
        {
            var amts = (from item in context.SaleInfoes
                        where ((item.SaleDate.Value.Month - 1) / 3) + 1 == quarter && item.SaleDate.Value.Year == year
                        group item by item.SaleDate.Value.Month into g
                        select new { Month = g.Key, SaleAmt = g.Sum(x => x.SaleAmt) });
            //Set Y axis values
            foreach (var item in amts)
            {
                data[item.Month] = Convert.ToInt32(item.SaleAmt);
            }

            //Add points in chart
            foreach (int str in data.Keys)
            {
                dpc.AddXY(DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(str), data[str]);
            }
        }
        Series series = Chart1.Series[0];

        series.IsValueShownAsLabel = true;
        series.LabelFormat         = "##,###";
        series.LabelBackColor      = Color.White;
        ViewState["ChartMode"]     = "Month";
    }