0

我正在尝试更新 datagridview 和图表。
我有一个类,在那个类中我有一个从数据库返回数据表的函数。
我需要 bindingSource 因为这是我更新图表(条形图)
的方式不幸的是,当图表是饼图时,我需要使用数据表进行更新
所以当我加载表单时,我有:

gbsGraph.DataSource = graphFunctions.prepareData() 'gbsGraph is a BindingSource
gdtGraphData = graphFunctions.prepareData() 'gdtGraphData  isDataTable
gdv.DataSource = gbsGraph 'gdv is my datagridview
AddHandler gdtGraphData.RowChanged, AddressOf gdtGraphData_RowChanged 'add event for update piechart
fillChart()'code to fill the chart

当用户按下刷新按钮时:

Private Sub tsmiRefresh_Click(sender As System.Object, e As System.EventArgs) Handles tsmiRefresh.Click
  gbsGraph.DataSource = graphFunctions.prepareData()' this works and dgv and my bar charts are updated
  gdtGraphData = graphFunctions.prepareData()  'this is should trigger the event gdtGraphData.RowChanged but it doesn't   
End Sub

我的 DataRowChange 自定义事件:

Private Sub gdtGraphData_RowChanged(ByVal sender As Object, ByVal e As DataRowChangeEventArgs)
    'Here is code to refill the Pie chart
    'but the event isn't fired
End Sub

所以我的问题是如何更新我的数据表并触发 gdtGraphData_RowChanged 事件?

谢谢

4

2 回答 2

0

当数据表内的行内的值发生更改时,将引发行更改事件,而不是当您将数据表的新实例放入变量时...

一个例子:

' This will raise the rowchanged event
gdtGraphData.Rows(0)("someField") = 123

' This will not!
gdtGraphData = graphFunctions.prepareData()

您必须将代码重新填充到 tsmiRefresh_Click 内的饼图...

于 2012-09-12T14:26:03.090 回答
0

在这一行

gdtGraphData = graphFunctions.prepareData()

您正在删除DataTable您收听其RowChanged事件的那个。您必须对现有表进行更改才能触发任何事件。

我认为您可以在上面的行之后添加对填充饼图的方法的调用,而不是那样。

于 2012-09-12T14:26:10.357 回答