- PR -

CalendarコントロールをDataGridの編集時に表示させる時にContainer.DataItemの値がNullだと…

1
投稿者投稿内容
もりぞう
会議室デビュー日: 2004/04/01
投稿数: 15
投稿日時: 2004-04-01 00:50
こんばんは。初めて投稿します。
初心者ながらASP.NETを使ってAccess連携データベースを作っています。
まだ本を見ながらのよちよち歩きですがよろしくお願いたします。

DataGridのEditCommandでの編集を行いたいのですが、その際日付を入力する欄にItemTemplate列でCalaendarコントロールを表示させようとしています。
このとき、編集する日付フィールドが空白(Null)だと
「型 'DBNull' から型 'Date' へのキャストが有効ではありません。」
のエラーが出てしまいます。
このような場合の対処方法を教えてください。
おそらく、カスタム連結式からメソッドを呼び出してFunctionプロシージャを作るんだと思うのですが、そのやり方がわかりません。
どなたかどうかよろしくお願い申し上げます。
(VBです。)

[ メッセージ編集済み 編集者: もりの 編集日時 2004-04-01 01:11 ]

[ メッセージ編集済み 編集者: もりの 編集日時 2004-04-01 01:23 ]
もりぞう
会議室デビュー日: 2004/04/01
投稿数: 15
投稿日時: 2004-04-01 13:35
自己レスです。半分解決しました。
Template列のCalenderコントロールのSelectedDataとVisibleDataのカスタム連結式に
nantoka(Container.DataItem("フィールド名"))
として、コードビハインドのほうで
Function nantoka(Byval DataItem As Object) As Date
If DataItem Is Nothing Then
Return Today
Else
Return dataitem
End If
End Function
とすれば、とりあえず値が存在するものを編集することはできました。
しかし、値がないとやっぱり型に関するエラーが出てしまいます。
(値がない場合、今日の日付を返したいと思っています)
たいへん恐縮ですが、引き続きよろしくお願いいたします。
KEI
会議室デビュー日: 2003/12/25
投稿数: 4
投稿日時: 2004-04-01 16:12
KEIです。
引用:

もりのさんの書き込み (2004-04-01 13:35) より:
If DataItem Is Nothing Then


とありますが、ここを次のようにしたらどうでしょうか?
これでDateTime型以外の場合は、Today?が返却されると思います。
コード:
If DataItem Is DateTime Then




もりぞう
会議室デビュー日: 2004/04/01
投稿数: 15
投稿日時: 2004-04-01 19:17
KEIさんありがとうございました。
「もし型が〜だったら〜する」という発想は目から鱗でした。
おっしゃるとおり、
If DataItem Is DateTime Then
としてみたのですが、これは型を式としては使えないとのエラーが出てしまいました。
でもこれはかなり近づいたと思います。
この方向でがんばってみたいと思います。
(二番目に書いたやり方でIfの前にTry〜を入れてやるとできることはできるんですが、なんか理解してしないまま終わってしまいそうなので…)
ぼると
常連さん
会議室デビュー日: 2003/04/09
投稿数: 42
投稿日時: 2004-04-01 19:49
引用:

もりのさんの書き込み (2004-04-01 19:17) より:
If DataItem Is DateTime Then
としてみたのですが、これは型を式としては使えないとのエラーが出てしまいました。

If TypeOf DataItem Is DateTime Then 〜
としてみて下さい。
KEI
会議室デビュー日: 2003/12/25
投稿数: 4
投稿日時: 2004-04-01 19:50
ぼるとさんフォローありがとうございました。
C#風に書いたらだめでしたね^^;
もりぞう
会議室デビュー日: 2004/04/01
投稿数: 15
投稿日時: 2004-04-01 20:17
KEIさん、ぼるとさんありがとうございました。ばっちり動きました。
データ型を参照するときはTypeOfを使うのですね。なるほど〜。
本当にありがとうございました。
初歩的な質問で大変失礼いたしました。
1

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