- PR -

WEBコントロールのDBGridで、データ表示のイベントを横取りするには?

1
投稿者投稿内容
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2005-06-06 14:44
現在、ASP.NET(VB.NET) + SQL Server 2000 でアプリケーション開発してるのですが、
SQL Server自身に目的の関数(文字列を複雑に加工する)がないため、VB.NETで作っ
ています。

VB.NETからSQLを発行し、結果のデータセットを取得して、その後にDBGridに表示され
る前に、取得したデータセットの列ごとに関数をかまして文字列加工した結果を貼り付
けるようにしたいのです。

逆に、DBGridのデータを更新した場合、DBGrid自身が更新系クエリーを発酵する前に
データを関数で変換かけてから更新したいのです。

このように、DBGridの列/行ごとに表示、変更があった場合のイベントを横取りして
データ加工することは可能でしょうか?

ご存知の方はおられませんでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-06-07 06:13
引用:

このように、DBGridの列/行ごとに表示、変更があった場合のイベントを横取りしてデータ加工することは可能でしょうか?


 行毎であれば不可能ではありません。DBGridのイベント一覧を見れば、データをバインドする毎に発生するイベントが見えてくるでしょう。
 変更があった場合も、ASP.NETであれば簡単です。「確定」ボタンを押しているはずですから、そのイベントを拾えばいいです。

_________________
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2005-06-08 08:48
おはようございます。

返答ありがとうございます。
もう少し具体的な説明をしますと・・・

ある個人情報の入ったテーブルが存在します。
そのあるテーブルに、データを挿入/更新するときは、個人情報の部分に関しては
VB.NETでクラス化した暗号化関数を使って暗号化した結果をSQL文に埋め込み、実行
します。

データを取り出す場合は、SQLでデータ取得した結果に復号化で戻した結果をコント
ロールに貼り付けます。

テキストボックスやラベルなど普通のコントロールなら、処理の途中で普通に暗号化/
復号化関数をかませばいいですが、データコントロール(とくにDBGrid)で、それを
実現する方法を模索しています。

で、DBGridを継承して、そういった暗号化/複合化機能を持ったDBGridを自作したい
と考えています。

そのために、DBGridにデータ貼り付く直前、更新系処理が走る直前のイベントを取れ
ないものかと考えました。

データをバインドする毎に発生するイベントを探してみます。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-06-08 09:41
場合によるけど
引用:

DBGridにデータ貼り付く直前


ItemDataBound
引用:

、更新系処理が走る直前


ItemCommand
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-06-08 20:47
 DataGridは表示のための道具です。それに暗号/復号処理を持たせるのは、どうかと思います。
 私なら、DataTableを直接バインドするのではなく、表示する情報などを持つクラスを作り、その中で暗号/復号処理を実装します。そのまま参照するプロパティと、暗号化し(て、Base64エンコードし)た結果を参照するプロパティを用意します。表示系にはそのまま参照するプロパティ、データベースには暗号化するプロパティを参照させます。

引用:

DataGrid.ItemDataBound イベント :

ItemDataBound イベントは、項目が DataGrid コントロールにデータ連結された後に発生します。このイベントは、クライアント上にデータ項目が表示される前に、その項目にアクセスする最後の機会を提供します。このイベントが発生した後は、データ項目が null になり、使用できなくなります。


_________________
1

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