Solved

ASP.net Dynamically building a Chart using a GridView

Posted on 2014-02-10
2
768 Views
Last Modified: 2014-02-10
Hi

I am trying to build the chart from the GridView shown in the image dynamically
using the VB.net code below.
How do I add the Company names and years to the X axis

 1
   Sub oChart(ByVal RowFields As String, ByVal DataField As String, ByVal sAggregate As String, ByVal ColumnFields As String, oChartID As String, ByVal oRow As Integer, ByVal oColumn As Integer, ByVal blnShow_Data_With_Chart As Boolean)
        ' Initialize the Chart object    
        Dim chart1 As New Chart()
        'chart1.ID = "chart1"

        'Add to do code here
        If Not IsPostBack Then
            ' 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()

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

            chart1.Palette = ChartColorPalette.EarthTones
            chart1.Palette = ChartColorPalette.Excel
            chart1.BackColor = System.Drawing.Color.Gray
            chart1.BorderSkin.SkinStyle = BorderSkinStyle.Emboss

            chart1.BorderlineColor = System.Drawing.Color.Gray
            chart1.BorderlineDashStyle = ChartDashStyle.Solid
            chart1.BorderlineWidth = 4

            ' Set the ChartArea properties
            chartArea1.Name = "Default"
            chartArea1.BackColor = System.Drawing.Color.Gray

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

            ' 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.BorderColor = System.Drawing.Color.DarkSlateGray
            series1.Name = "Series1"
            series1.ChartType = SeriesChartType.SplineArea

            series2.BorderColor = System.Drawing.Color.DarkSlateGray
            series2.Name = "Series2"
            series2.ChartType = SeriesChartType.Column


            series3.Name = "Series3"
            series3.BorderWidth = 3
            series3.ChartType = SeriesChartType.Spline

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

            ' Add points to each series.
            Dim rnd As New Random()

            'For Each ser As Series In chart1.Series
            'For i As Integer = 0 To 12
            'ser.Points.AddY(rnd.[Next](5, 40))
            'Next
            'Next


            'chart1.DataSource = dt
            'chart1.DataBind()

            'GridView1.DataSource = dt
            'GridView1.DataBind()
            Dim oGridView As New GridView
            'oGridView.DataSource = dt
            'First get the Aggregate function
            Dim oAggregate As AggregateFunction
            If sAggregate = "Count" Then
                oAggregate = AggregateFunction.Count
            ElseIf sAggregate = "Sum" Then
                oAggregate = AggregateFunction.Sum
            ElseIf sAggregate = "First" Then
                oAggregate = AggregateFunction.First
            ElseIf sAggregate = "Last" Then
                oAggregate = AggregateFunction.Last
            ElseIf sAggregate = "Average" Then
                oAggregate = AggregateFunction.Average
            ElseIf sAggregate = "Max" Then
                oAggregate = AggregateFunction.Max
            ElseIf sAggregate = "Min" Then
                oAggregate = AggregateFunction.Min
            ElseIf sAggregate = "Exists" Then
                oAggregate = AggregateFunction.Exists
            End If

            Dim dt As DataTable = ExcelLayer.GetDataTable("_Data\DataForPivot.xls", "Sheet1$")
            Dim pvt As New Pivot(dt)
            oGridView.DataSource = pvt.PivotData(RowFields, DataField, oAggregate, ColumnFields)
            oGridView.DataBind()
            Me.Table1.Rows(oRow).Cells(oColumn).Controls.Add(oGridView)
            oGridView.Visible = True
            ' MsgBox(oGridView.Rows(0).Cells.Count.ToString)

       
            Dim oData As Double
            'SO LOOP THROUGH ALL THE NUMERIC CELLS AND PLOT ON A CHART
            For Each ser As Series In chart1.Series
                'ser.Label = ser.Name
                For r As Integer = 0 To oGridView.Rows.Count - 1
                    For c As Integer = 1 To oGridView.Rows(0).Cells.Count - 1
                        'only add a point if the item is numeric
                        If IsNumeric(oGridView.Rows(r).Cells(c).Text) Then
                            oData = CDbl(oGridView.Rows(r).Cells(c).Text)
                            'ser.Points.Add(oData)
                            ser.Points.AddY(oData)
                        End If
                    Next
                Next
            Next

            Me.Table1.Rows(oRow).Cells(oColumn).Controls.Add(chart1)
            'Only show GridView if specified
            If blnShow_Data_With_Chart = True Then
                oGridView.Visible = True
            End If

            'Preserve the chart's state during callbacks
           
        End If



    End Sub
0
Comment
Question by:murbro
2 Comments
 
LVL 7

Accepted Solution

by:
XGIS earned 500 total points
ID: 39847224
Hello Murbro..
According to this post they had success getting those labels to display... maybe it will work for you too..  xtremevbtalk

Here is a sample that shows the labels in action... VB Sample 2
0
 

Author Closing Comment

by:murbro
ID: 39847237
Thanks
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Today is the age of broadband.  More and more people are going this route determined to experience the web and it’s multitude of services as quickly and painlessly as possible. Coupled with the move to broadband, people are experiencing the web via …
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now