@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

TrueDBGridのUnboundColumnFetchについて

1
投稿者投稿内容
Chikota
常連さん
会議室デビュー日: 2005/09/08
投稿数: 23
投稿日時: 2006-03-02 22:41
VB.NET2003でwindowsフォームを開発しています。
GrapeCityのTrueDBGridを使用しているのですが、UnboundColumnについて質問します。

列A,Bはデータ連結をしており、列CがUnboundColumnで、UnboundColumnFetchイベントを利用してA&Bのデータを表示しています。
一番最初にデータを表示する際は列Cが正しく表示されるのですが、フィルタを行うとUnboundColumnFetchイベントが発生せず、フィルタを行った分行数は減るのですが、列Cが更新されません。
コード:
   A     B      C
---------------------
  AAA   BBB   AAABBB
  BBB   CCC   BBBCCC
  BBB   DDD   BBBDDD


これを A like '%B%' でフィルタリングを行うと
コード:
   A     B      C
---------------------
  BBB   CCC   AAABBB
  BBB   DDD   BBBCCC



となってしまいます。
DataTable.DefaultRowFilterでも、TrueDBGridのフィルタ機能を使っても同じ結果になります。

UnboundColumnの値を正しく表示させるには、UnboundColumnFetchイベントを発生させる必要があるのだと思うのですが、どのようにしたらよいのでしょうか。

どなたかご存知の方がいらっしゃったら教えていただけないでしょうか。
よろしくお願いします。
Chikota
常連さん
会議室デビュー日: 2005/09/08
投稿数: 23
投稿日時: 2006-03-03 18:31
解決しましたので自己レスします。

まず、UnboundColumnFetchイベントが発生しない、というのは私の勘違いで、きちんとイベントは発生していました。大変失礼しました。

次にTrueDBGrid付随のHelpファイルでは、このUnboundColumnFetchイベントでDataTableの値を参照しています。
これをTrueDBGridの値を参照するようにしたところ、Sort後も正しい値がUnboundColumnに表示されるようになりました。

コード:
Dim trueGrid as C1TrueDBGrid
Dim dtTable as DataTable
Private Sub trueGrid_UnboundColumnFetch() Handles trueGrid.UnboundColumnFetch
     '// Help
     'e.Value = dtTable.Rows(e.Rows).Item("A") * dtTable.Rows(e.Row).Item("B")

     '// trueGridの値を参照する
     e.Value = trueGrid.Item(e.Row, "A") & trueGrid.Item(e.Row, "B")
End Sub


1

スキルアップ/キャリアアップ(JOB@IT)