数据集更新时,VB.NET图表不会更新

时间:2013-04-22 12:31:59

标签: charts dataset

我有一个叫做addchartPrevious24()

的子程序

在初始加载时以及当用户要求刷新时调用此子。这个子的工作是去一个访问数据库查询信息。填充到数据集中。然后创建图表和图表区域。然后将数据集设置为图表的数据源。我的问题是,如果我重新执行sub,它不会使用新数据更新图表,尽管数据集确实已更新。

Public Sub addchartPrevious24()
   Dim Connection As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\manage.mdb;Jet OLEDB:Database Password=password")
    Dim da1 As New OleDb.OleDbDataAdapter
    Dim ds1 As New DataSet()
    Dim Command As New OleDb.OleDbCommand

    Connection.Open()
    da1.SelectCommand = New OleDb.OleDbCommand("SELECT General_Counters_Table.product_id, Sum(General_Counters_Table.ulboardcyclecount) AS SumOfulboardcyclecount, ltrim(STR(Month(General_Counters_Table.Date_Time)))+ '/'+Ltrim(STR(Day(General_Counters_Table.Date_Time))) + '/'+ltrim(STR(Year(General_Counters_Table.Date_Time))) + ' hour ' +Ltrim(STR(Hour(General_Counters_Table.Date_Time)))  as DATEConverted FROM General_Counters_Table  where Date_Time >=(NOW()-1) and Date_Time <= (NOW()) GROUP BY General_Counters_Table.product_id, Year(General_Counters_Table.Date_Time), Month(General_Counters_Table.Date_Time), Day(General_Counters_Table.Date_Time), Hour(General_Counters_Table.Date_Time) ORDER BY Year(General_Counters_Table.Date_Time), Month(General_Counters_Table.Date_Time), Day(General_Counters_Table.Date_Time), Hour(General_Counters_Table.Date_Time)", Connection)
    da1.Fill(ds1, "Throughput")
    Connection.Close()

    'Defines Chart and Chart Area
    Dim chart1 = New Chart()
    Dim chartarea1 As ChartArea = New ChartArea()
    TabPage2.Controls.Add(chart1)
    chartarea1.Name = "ChartArea1"
    chart1.ChartAreas.Add(chartarea1)
    Chart1.Location = New System.Drawing.Point(10, 10)
    chart1.Name = "Chart1"
    Chart1.Size = New System.Drawing.Size(800, 400)
    chart1.TabIndex = 0
    chart1.Text = "Chart1"
    chartarea1.AxisX.LabelStyle.Angle = -60
    chartarea1.AxisX.Interval = 1
    chartarea1.AxisY.MajorGrid.Interval = 5
    chartarea1.BackColor = Color.Azure
    chartarea1.ShadowColor = Color.Red
    chartarea1.Area3DStyle.Enable3D = True
    chartarea1.AxisX.MajorGrid.Enabled = False
    chartarea1.AxisX.LabelStyle.Font = New System.Drawing.Font("Times New Roman", 11.0F, System.Drawing.FontStyle.Italic)

    'Legend
    Dim legend1 As Legend = New Legend()
    legend1.Name = "Legend1"
    chart1.Legends.Add(legend1)

    'Series
    Dim series1 As Series = New Series()
    series1.ChartType = SeriesChartType.StackedColumn
    series1.ChartArea = "ChartArea1"
    series1.Legend = "Legend1"
    series1.Name = "Throughput"
    chart1.Series.Add(series1)
    chart1.Series("Throughput").XValueMember = "DateConverted"
    chart1.Series("Throughput").YValueMembers = "sumofulboardcyclecount"
    chart1.Series("Throughput").IsValueShownAsLabel = True 'shows label on datapoint
    chart1.DataSource = ds1.Tables("Throughput")
    chart1.Update()
    chart1.DataBind()
End Sub

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,提出了"This Question"

的解决方案

尝试使用以下方法清除数据点:

Chart.Series.Points.Clear()

然后再添加它们。