以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  隐藏列后生成图表问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=134019)

--  作者:otterlike
--  发布时间:2019/4/25 14:59:00
--  隐藏列后生成图表问题

        For Each c As Col In Tables("净资产收益率").Cols
            If c.Name.Contains("1231") Or c.Name.Contains("代码") Or c.Name.Contains("名称")Then
                c.Visible = True
            Else
                c.Visible = False
            End If
        Next
        
        For r As Integer = 0 To t.Rows.count - 1
            Series = Chart.SeriesList.Add() \'增加一个图系
            Series.Text = t.rows(r)("名称")  \'设置图系的标题
            Series.Length = t.Cols.Count   \'设置图系的长度
            Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
            
            For c As Integer = 3 To t.Cols.count - 1
                Series.X(c) = c
图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20190425144243.png
图片点击可在新窗口打开查看
                Series.Y(c) = t.Rows(r)(c)
                Chart.AxisX.SetValueLabel(c, t.Cols(c).caption.SubString(t.Cols(c).caption.Length - 10)) \'指定字符表示
                Series.DataLabelText = "{#YVAL}"
                Series.LineThickNess=5
            Next
        Next
        
        Chart.AxisX.AnnoWithLabels = True \'启用字符标示
        Chart.LegendVisible = True \'显示图列
        Chart.LegendCompass= CompassEnum.South  \'图列显示在南方(底端)


隐藏的列在图表中也显示出来了,请问该如何处理?


--  作者:有点蓝
--  发布时间:2019/4/25 15:12:00
--  

For c As Integer = 3 To t.Cols.count - 1
    If t.Cols(c).Visible = False Then Continue For
    Series.Y(c) = t.Rows(r)(c)

--  作者:otterlike
--  发布时间:2019/4/26 13:05:00
--  
隐藏的列是没有显示出来了,但是生成的图表线条也不见了,望大师指点
图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20190426130149.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2019/4/26 14:08:00
--  
Dim lit As new List(of String)
For Each c As Col In Tables("净资产收益率").Cols
    If c.Name.Contains("1231") Or c.Name.Contains("代码") Or c.Name.Contains("名称")Then
        c.Visible = True
        lit.Add(c.Name)
    Else
        c.Visible = False
    End If
Next

For r As Integer = 0 To t.Rows.count - 1
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Text = t.rows(r)("名称")  \'设置图系的标题
    Series.Length = lit.Count   \'设置图系的长度
    Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
    
    For c As Integer = 0 To lit.count - 1
        Series.X(c) = c
……

--  作者:otterlike
--  发布时间:2019/4/26 16:26:00
--  
For r As Integer = 0 To t.Rows.count - 1
            Series = Chart.SeriesList.Add() \'增加一个图系
            Series.Text = t.rows(r)("名称")  \'设置图系的标题
            Series.Length = lit.Count   \'设置图系的长度
            Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
            
            For c As Integer = 2 To lit.count - 1
                Series.X(c) = c
                Series.Y(c) = t.Rows(r)(lit(c))
                Chart.AxisX.SetValueLabel(c, lit(c).SubString(lit(c).Length - 10)) \'指定字符表示
                Series.DataLabelText = "{#YVAL}"
                Series.LineThickNess=5
            Next
        Next


使用集合取代原有的横坐标就解决问题了,多谢大师