- PR -

データグリッドの、あるカラムのデータを、条件によって変更したい

1
投稿者投稿内容
カレー落武者
常連さん
会議室デビュー日: 2003/09/12
投稿数: 49
投稿日時: 2003-09-17 10:05
C#でWebアプリケーションを作成しようとしている者です。
あるデータベースの検索結果を、DataGridに表示させているのですが、このデータベースでは、男女の性別を「男=1、女=2」として管理しているのです。
この場合、DataGridにデータベースの内容をそのまま表示してしまうと、男か女かがすごくわかり辛いのです。っていうか、知っている人にしか解らないでしょう。

そこで、性別のカラムのデータが、1であれば「男」と表示し、2であれば「女」と表示するようにしたいのです。
恐らく、Page_Load時にDataGridのDataBindを行った後に、直接DataGridの内容を操作するのではないかと思っています。が、具体的な方法がよく判らず、調べるのに手間取っている状況です。

どなたか、最適な方法をご存知でしたら、教えていただけないでしょうか。
----------
追記です。
出来れば、データベースをOracleに限定する事なく、AccessやSQL Serverでも使用できるように作りたいので、SQL文に依存するのは出来るだけ避けたいと考えております。
わがままな質問で申し訳ないのですが、どうかよろしくお願いいたします。


[ メッセージ編集済み 編集者: カレー落武者 編集日時 2003-09-17 10:34 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-17 10:14
こんにちは。

 データベースがオラクルなら、
SELECT DECODE(性別列, 1, '男', 2, '女', '不明') AS 性別, ...
(Oracle9.2のマニュアルより)

 「AS 別名」で列名を変更しておかないと、列名が「DECODE(性別列,...」になります^o^;
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-09-17 10:32
こんにちは。

参考までに2つ。
1.SELECT DECODE(Seibetsu,'1','男','女') Seibetsu 〜
 とDECODEを使用して取得し、そのままDataGridにDataBindする。
 ※Oracleしか使用したことがないので他のものでも有効かどうか分りません。
  詳しい方にフォローして頂けると有難いです(笑)。

2.テーブル情報を一旦DataTableで取得し、数値から文字に変換する。
 それをDataViewに格納し、DataGridのDataSourceプロパティで取得してからDataBindする。

といったところでしょうか。
DataTableについては.NETのヘルプの「DataTable クラス」にサンプルコードなどが載っています。
(こちらでサンプルを書いてもいいのですが、VBの人なので・・・)

----------------------------------------------------------
もたもた書いてたらJittaさんに先越されてしまった・・・・(笑)。
#私の方のSQLはASは省略してあります。これでも大丈夫なはず。
#それと、性別項目がCHARだった場合を想定しています。
#NUMBERの場合はJittaさんのようになります。

[ メッセージ編集済み 編集者: まゆりん 編集日時 2003-09-17 10:40 ]
焼きそば
ベテラン
会議室デビュー日: 2002/11/06
投稿数: 86
お住まい・勤務地: 東京
投稿日時: 2003-09-17 10:39
SQL Serverでは
SELECT CASE seibetu WHEN 1 THEN '男' WHEN 2 THEN '女' END 性別
で良いかと。


あとはまゆりんさんと同じように、
ItemDataBoundイベントとDataTableの組合せくらいですかね。
NYRL
ベテラン
会議室デビュー日: 2003/07/14
投稿数: 90
投稿日時: 2003-09-17 11:26
DBの種類に依存したくないというなら

定数用のテーブルを作成し

中身は
1 男
2 女

として
それをSQLに結合すればよいのでは?
カレー落武者
常連さん
会議室デビュー日: 2003/09/12
投稿数: 49
投稿日時: 2003-09-17 12:37
ありがとうございました。

結構いろんな方法があるんですね・・・。
データベースを操作しても構わないか、検討をした上で、どの方法を取るかを決めたいと思います。
迅速で正確な解答を頂き、まことにありがとうございました。
1

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