Search code examples
asp.netvb.netzedgraph

zed graph x axis labels


I am trying to loop through my datatable column sdescr and use the text in the columns as the labels of my x axis, but it isnt working i am getting this error

Value of type 'System.Collections.Generic.List(Of String)' cannot be converted to '1-dimensional array of String'.

For i As Integer = 0 To myCurve1.Points.Count - 1
        Dim pt As PointPair = myCurve1.Points(i)
        ' Create a text label from the Y data value   
        Dim text As New TextObj(pt.Y.ToString("f0"), pt.X, pt.Y + 0.1, CoordType.AxisXYScale, AlignH.Left, AlignV.Center)
        text.ZOrder = ZOrder.A_InFront
        text.FontSpec.Angle = 90
        myPane.GraphObjList.Add(text)


        Dim labels As New List(Of String)

        For Each row As DataRow In tablegraph.Rows
            labels = row.Item("SDESCR")
        Next row

        myPane.XAxis.Scale.TextLabels = labels
        myPane.XAxis.Type = AxisType.Text
    Next

Solution

  • You need to remove the code to get the labels out of your For Next loop that is creating points.

    Which means this

        Dim labels As New List(Of String)          
        For Each row As DataRow In tablegraph.Rows             
        labels = row.Item("SDESCR")         
        Next row          
    
        myPane.XAxis.Scale.TextLabels = labels         
        myPane.XAxis.Type = AxisType.Text
    

    Now, outside of the loop plotting points, you need to go through your DataTable

    Please look at the error you're getting... The List of String can't be converted into a string array. Those objects aren't equivalent.

    One option would be to do something like this (after your loop to plot points)

    Dim labels(tablegraph.Rows.Count - 1) as String
    
    For i As Integer = 0 To tablegraph.Rows.Count - 1
         labels(i) = tablegraph.Row(i).Item("SDESCR")
    Next
    
    myPane.XAxis.Scale.TextLabels = labels         
    myPane.XAxis.Type = AxisType.Text
    

    I don't have Zed here on this computer, so I haven't checked this in Visual Studio, but this should give you a very decent direction.