none
chart组件绑定数据(DataBindTable)后无法显示曲线或不能显示所有Series RRS feed

  • 问题

  • 我用vs2010编写的一个小工具,在利用vs2010附带的chart生成图表时出现无法解决的疑问。databindtable在绑定数据时总是会出现无法显示曲线或者无法绑定的问题,如下描述:

    数据库结构:

    列名  数据类型  是否可为NUll

    id  int型  主键标识 false

    mac_id int  false

    value varchar(MAX) true

    Hum  varchar(MAX) true

    time smalldatetime  主键  false

    两个主键id和time,其中id为标识序列。

    测试用的数据如下。

    id    mac_id  Values  Hum  time

    1    101      20         NULL 2013/6/1 0:00:00
    2 101 30 10       2013/6/2 0:00:00
    3 102 40 10 2013/6/2 0:00:00
    4 101 40 15 2013/6/3 0:00:00
    5 102 50 20 2013/6/3 0:00:00
    6 101 60 20 2013/6/4 0:00:00


    代码块:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Chart1.Series.Clear()
            Using cnn As New SqlConnection("Data Source=my-PC\SQLEXPRESS;Initial Catalog=master;Integrated Security=True")
                Dim str As String = "SELECT   id ,value, Hum, time AS t FROM  Test   WHERE  mac_id = 101 ORDER BY t"
                Dim cmd As New SqlCommand(str, cnn)
                cnn.Open()
                Dim reader As SqlDataReader = cmd.ExecuteReader
                Me.Chart1.DataBindTable(reader, "t")
                reader.Close()
                cnn.Close()
                For Each x In Me.Chart1.Series
                    x.ChartType = DataVisualization.Charting.SeriesChartType.Spline
                Next
            End Using
        End Sub

    运行后结果却只有一条id的。根据databindtable的定义不是应该有id ,value, Hum三条Series么?

    然而 ,如果我将id 排除后,即sql的语句变为

    Dim str As String = "SELECT   value, Hum, time AS t FROM  Test   WHERE  mac_id = 101 ORDER BY t"

    执行后,获得的chartAreas 区域却是一片空白!!

    请问,这种情况是否正常,如何解决问题?

    2013年7月2日 5:48