We help IT Professionals succeed at work.
Get Started

ASP.net Chart generation causes server error

Murray Brown
Murray Brown asked
on
528 Views
Last Modified: 2014-08-09
Hi
I am using the following code to generate a chart on the timer tick. All works fine in debugging but it crashes on line and I get the error shown below. I also ran the timer tick without the  oAdd_Random_Chart() call and it caused the error. So it looks like the timer tick as the main problem

  Protected Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        oAdd_Random_Chart()
    End Sub

 Sub oAdd_Random_Chart()
        ' Initialize the Chart object    
        Dim chart1 As New Chart()
        chart1.ID = "chart1"

        'Add to do code here

        ' Initialize objects and elements
        Dim chartArea1 As New ChartArea()
        Dim legend1 As New Legend()
        Dim series1 As New Series()
        Dim series2 As New Series()
        Dim series3 As New Series()
        Dim series4 As New Series()
        Dim series5 As New Series()

        ' Set the Chart Properties
        chart1.Width = 900
        chart1.Height = 340

        chart1.BackColor = System.Drawing.Color.Navy
        chart1.BorderSkin.SkinStyle = BorderSkinStyle.Emboss

        chart1.BorderlineColor = System.Drawing.Color.Gray
        'chart1.BorderLineStyle = ChartDashStyle.Solid
        chart1.BorderlineWidth = 4
        chart1.BackGradientStyle = GradientStyle.LeftRight

        ' Set the ChartArea properties
        chartArea1.Name = "Default"
        chartArea1.BackColor = System.Drawing.Color.SlateGray
        chartArea1.BackGradientStyle = GradientStyle.LeftRight

        'Enable AJAX features such as zooming and scrolling for the ChartArea
        'chartArea1.CursorX.UserEnabled = True
        'chartArea1.CursorY.UserEnabled = True

        ' Add the ChartArea to the Chart
        chart1.ChartAreas.Add(chartArea1)

        ' Set the Legend properties
        legend1.Name = "Default"
        legend1.Docking = Docking.Bottom
        legend1.LegendStyle = LegendStyle.Row
        legend1.Alignment = System.Drawing.StringAlignment.Center

        legend1.BackColor = System.Drawing.Color.Transparent
        legend1.BorderColor = System.Drawing.Color.Black
        legend1.BorderWidth = 1

        ' Add the Legend to the Chart
        chart1.Legends.Add(legend1)

        ' Set the Series properties
        series1.Name = "Store 1"
        series1.ChartType = SeriesChartType.Line
        series1.BorderColor = Drawing.Color.Black
        series1.BorderWidth = 3
        'following two lines used to change series line colors....
        series1.EmptyPointStyle.Color = Drawing.Color.Transparent
        series1.Color = Drawing.Color.DodgerBlue

        series2.Name = "Store 2"
        series2.BorderColor = System.Drawing.Color.DarkSlateGray
        series2.BorderWidth = 3
        series2.ChartType = SeriesChartType.Line
        'following two lines used to change series line colors....
        series2.EmptyPointStyle.Color = Drawing.Color.Transparent
        series2.Color = Drawing.Color.Green

        series3.Name = "Store 3"
        series3.BorderWidth = 3
        series3.ChartType = SeriesChartType.Line
        'following two lines used to change series line colors....
        series3.EmptyPointStyle.Color = Drawing.Color.Transparent
        series3.Color = Drawing.Color.Red


        series4.Name = "Store 4"
        series4.BorderWidth = 3
        series4.ChartType = SeriesChartType.Line
        'following two lines used to change series line colors....
        series4.EmptyPointStyle.Color = Drawing.Color.Transparent
        series4.Color = Drawing.Color.Olive


        series5.Name = "Store 5"
        series5.BorderWidth = 3
        series5.ChartType = SeriesChartType.Line
        'following two lines used to change series line colors....
        series5.EmptyPointStyle.Color = Drawing.Color.Transparent
        series5.Color = Drawing.Color.MintCream

        ' Add the Series to the Chart
        chart1.Series.Add(series1)
        chart1.Series.Add(series2)
        chart1.Series.Add(series3)
        chart1.Series.Add(series4)
        chart1.Series.Add(series5)

        ' Add points to each series.
        Dim rnd As New Random()
        Dim S As String = "Laptops,Desktops,Cameras,Smart Phones,Phones,Batteries,Computer Bags,Camera Bags,Accessories,Airtime,Modems,Memory Sticks,3g USB Modems"
        Dim arrSplit As Object = Split(S, ",")
        Dim oNewRandomNumber As String

        For Each ser As Series In chart1.Series
            For i As Integer = 0 To 12
                'ser.Points.AddY(rnd.[Next](5, 10))
                oNewRandomNumber = rnd.[Next](0, 100)
                If ser.Name = "Store 1" Then
                    oNewRandomNumber = oNewRandomNumber * 0.5
                ElseIf ser.Name = "Store 2" Then
                    oNewRandomNumber = oNewRandomNumber * 0.7
                ElseIf ser.Name = "Store 3" Then
                    oNewRandomNumber = oNewRandomNumber * 0.9
                ElseIf ser.Name = "Store 4" Then
                    oNewRandomNumber = oNewRandomNumber * 0.3
                ElseIf ser.Name = "Store 5" Then
                    oNewRandomNumber = oNewRandomNumber * 0.6
                End If
                ser.Points.AddXY(arrSplit(i), oNewRandomNumber)
            Next
        Next

        Dim oTitle As String = "Sales Activity Across Stores"
        chart1.Titles.Add(New Title(oTitle, Docking.Top, New Font("Century Gothic", 13, FontStyle.Regular), Drawing.Color.White))
        'Preserve the chart's state during callbacks
        'chart1.CallbackStateContent = CallbackStateContent.All

        Me.Panel1.Controls.Add(chart1)
    End Sub

Open in new window


1Image1.jpg
Comment
Watch Question
CERTIFIED EXPERT
Most Valuable Expert 2012
Top Expert 2014
Commented:
This problem has been solved!
Unlock 1 Answer and 5 Comments.
See Answer
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE