Ändra AxisLabel i diagram i Codebehind
Jag skall göra ett diagram (ChartType=Bar) med data från en GridView. Jag har följande kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Function CreateDataTable() As DataTable Dim col As DataColumn = Nothing Dim dtCart As New DataTable( "tabAnalys" ) col = New DataColumn( "namn" ) col.DataType = System.Type. GetType ( "System.String" ) col.AutoIncrement = True col.AutoIncrementSeed = 1 dtCart.Columns.Add(col) col = New DataColumn( "svarA" ) col.DataType = System.Type. GetType ( "System.Int32" ) dtCart.Columns.Add(col) For i = 1 To 5 Dim dr As DataRow = dtCart.NewRow() dr(1) = GridView1.Rows(i - 1).Cells(1).Text dtCart.Rows.InsertAt(dr, i - 1) Chart3.Series( "Series1" ).AxisLabel = GridView1.Rows(i - 1).Cells(0).Text Next i Return dtCart End Function |
Detta ger som resultat att x-axelns ALLA etiketter (AxisLabel) blir lika, dvs lika med sista raden i kolumn 0 i GridView.
Genom att sätta in Points(i-1) innan AxisLabel enligt följande:
1 | Chart3.Series( "Series1" ).Points(i - 1).AxisLabel = GridView1.Rows(i - 1).Cells(0).Text |
trodde jag att problemet var löst, men det fungerade inte. Jag får följande felmeddelande:
ArgumentOutOfRangeException was unhandled by user code
Index låg utanför intervallet. Det får inte vara negativt och måste vara mindre än mängdens storlek. Parameternamn: index
Vad är det för fel? Är det någon som kan hjälpa mig med detta?
Svara
Sv: Ändra AxisLabel i diagram i Codebehind
När binder du datat till Chart-objektet?
Om du ska sätta om AxisLabel för en specifik Point så borde det behöva ske efter du har bundit datat.
Svara
Sv:Ändra AxisLabel i diagram i Codebehind
Jag har det så här:
Sub diagram()
Chart3.DataSource = CreateDataTable()
Chart3.DataBind()
End Sub
Det är första gången jag jobbar med ett Chart-objekt så jag har lite dålig koll.
Hur gör jag bindningen till GridView i så fall?
Svara
Sv: Ändra AxisLabel i diagram i Codebehind
Det jag menar är att du nog måste sätta (de individuella) etiketterna efter DataBind() anropats.
Typ
1 2 3 4 5 6 7 | Sub diagram() Chart3.DataSource = CreateDataTable() Chart3.DataBind() For i = 1 To 5 Chart3.Series( "Series1" ).Points(i - 1).AxisLabel = GridView1.Rows(i - 1).Cells(0).Text Next i End Sub |
Svara
Sv:Ändra AxisLabel i diagram i Codebehind
Jaha, var det så enkelt. Nu funkar det.
Tack för hjälpen.
Svara