0

datagridviewとチャートを更新しようとしています。
私にはクラスがあり、そのクラスにはデータベースからデータテーブルを返す関数があります。
これがチャート(棒)を更新する方法であるため、bindingSourceが必要です。
残念ながら、チャートがPieの場合、更新にデータテーブルを使用する必要があります。
したがって、フォームをロードすると、次のようになります。

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イベントを発生させる方法です。

ありがとうT

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 に答える