- PR -

DATAGRIDの処理について

1
投稿者投稿内容
ぴお
会議室デビュー日: 2004/01/16
投稿数: 10
投稿日時: 2004-01-29 20:00
いつも勉強させていただいております。
Win2KSrv+ASP.NETで開発をしています。

ウェブフォームにDataGrid配置し、
DBと連結したいと思ってます。

DBのデータがNULLの場合、DataGrid上に”×”という文字を表示し、
NULL以外の場合、”○”と表示させたいと思います。

いろいろと調査しましたが、有力な情報が得られませんでした。

皆様、ご教授お願いします。
Micky
大ベテラン
会議室デビュー日: 2002/09/04
投稿数: 137
投稿日時: 2004-01-30 09:19
Mickyでございます。

えっと、SQLの方でCASEを使って対応した事があります。
ご要望と違いましたらごめんなさい。
無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2004-01-30 09:41
DBから(ExecuteReaderなりExecuteScalarなりで)結果を引っ張ってきて
その結果がDBNullかどうかをif文で調べて分岐してみてはいかがでしょう?

[ メッセージ編集済み 編集者: 無月 重造 編集日時 2004-01-30 09:42 ]
ぴお
会議室デビュー日: 2004/01/16
投稿数: 10
投稿日時: 2004-01-30 18:47
Micky様
>えっと、SQLの方でCASEを使って対応した事があります。
>ご要望と違いましたらごめんなさい。

該当の項目が、DATETIME型の為、STRING型での変換が出来ませんでした。
書籍で調査した所、DATETIME型はSTRING型より、優先順位が上のためだそうです。
項目自体をSTRING型に変更も考えましたが、
データ型の変更が難しい状態まで、
システムが出来上がっているので、変更したくはありません。

無月 重造様
>DBから(ExecuteReaderなりExecuteScalarなりで)結果を引っ張ってきて
>その結果がDBNullかどうかをif文で調べて分岐してみてはいかがでしょう?
テストプログラムを作成してみます。
なにかございましたら、ご教授をお願いします。

ご意見をありがとうございます。
きいぼー
会議室デビュー日: 2004/01/30
投稿数: 7
投稿日時: 2004-01-30 19:42
きいぼーです。
以下のようにWindowsアプリでは出来ます。
ASP.Netではためしていませんが、できると思います。
参考までに。

DataGridのテーブルスタイルを取得し、カラムのNullTextを設定する

----------------以下参考コードです。Null部分に"未入力"と表示されます。----------
'DataGridTableStyleの取得
Dim ts As DataGridTableStyle
ts = DataGrid1.TableStyles("DataTable1")

'"Column1"のDataGridTextBoxColumnを取得
Dim cs As DataGridTextBoxColumn
cs = CType(ts.GridColumnStyles("Column1"), DataGridTextBoxColumn)
'(Null)を変更する
cs.NullText = "未入力"
きいぼー
会議室デビュー日: 2004/01/30
投稿数: 7
投稿日時: 2004-01-30 19:45
きいぼーです。
すみません。
趣旨と違っていたようです申し訳ないです。
(Nullの場合だけしか対応できませんね。すみません)
ぴお
会議室デビュー日: 2004/01/16
投稿数: 10
投稿日時: 2004-02-04 17:48
力技で解決出来ました。
DataReaderオブジェクトを使用して、
確認が取れました。

その他、Datasetオブジェクトを作成し、
DataGrid1.DataBind()を実行後にセルを編集する方法を
とることにしました。
(DataGridにSQL文の結果を格納する自作関数を作成していた為)

ちなみにサンプルコードです。
コード:
dim tmpstr as string=CType(e.Item.Cells(0).Controls(0),label).Text
if tmpstr="" then
  e.Item.Cells(0).Text="×"
else
  e.item.Cells(0).text="○"
end if


_________________
1

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