DOBON.NET DOBON.NETプログラミング掲示板過去ログ

datagrid に入力時にnullを検証する

環境/言語:[vb .Net2003 Windows2000]
分類:[.NET]

お世話になっています。
 datagridにデータテーブルの内容を表示させています。
 データテーブルの方には、プライマリキーが設定してあり
データグリッド上からデータを入力してもらう形式を取っています。
 ここで、新しい行のプライマリキーの項目に空白が入力された場合、
「列’○○’にNullを使用することはできません。値を修正しますか?」
が表示されてしまいます。
 この新しい行の追加をキャンセルして、エラーを表示しないように
するにはどのようにしたらいいのでしょうか?
■No17401に返信(ららさんの記事)
DataGridTextBoxColumn を継承して Commit する前に修正とか?
↓一通り勉強してみてください。
http://dobon.net/vb/dotnet/datagrid/index.html
> ららさん

datagridの入力値でDBの登録、更新、削除をするということでしょうか?
認識が誤っていたらごめんなさい。
もしそれが正しい場合、

1.DB操作前に入力値チェックを行って
 エラーがあった場合はDB操作を行わずに画面に戻る。
 
2.入力がない部分については初期値で置換し、DB登録なりを行う。

こんなところでしょうか。
あと、1点気になったのですが、
プライマリーキーをUserに指定させて登録は危ないかと。
できることなら、主キーは自動採番にした方が一意制約の対応も
より確実にできると思います。
仕様がわからないので何とも言えませんが。
ららです。
ご教授いただき誠に、ありがとうございます。

 処理の具体的な内容としましては、タイトルとURLをデータグリッドに
表示して直接データグリッド上で修正・追加・削除を行えるように
作成しているところです。
 本当は、旅がらす様が言われるようにIDを振ってあげたほうがいいのかと
思いますが、URLがかぶらなければ登録できるように、URLフィールドを
プライマリキーとして設定している感じです。
 また、内容はデータセットからWriteXmlによってXMLに保存させてます。

そこでNULLを捕まえるために、データが変更される前に確認処理をしようと思い

AddHandler DatTable.ColumnChanging, New DataColumnChangeEventHandler(AddressOf OnColumnChanging)

のイベントを追加して、イベント関数内で

Private Sub OnColumnChanging(ByVal sender As Object, ByVal args As DataColumnChangeEventArgs)
if args.ProposedValue.ToString.Length = 0 Then
if Not args.Column.AllowDBNull() Then
MsgBox("空白を登録することはできません。")
End If
End if
End Sub

上記処理をいれたところ、NULLをトラップできたのですが、
MsgBoxを表示後に、エラーが起こった処理をキャンセルするコードが分からず
「列’○○’にNullを使用することはできません。値を修正しますか?」
と続けて表示されています。

お恥ずかしい限りですみません。

なんとかする方法はありますでしょうか?よろしくお願いいたします。

るしぇ様
DataGridTextBoxColumn を継承して Commit するにはどのようにしたら
よろしいでしょうか?申し訳ありませんが、もう少し詳しく教えて
いただけないでしょうか?
■No17435に返信(ららさんの記事)
ColumnChanging だと行の追加を阻止することは難しいのでは?
だったらエラーの出ないデータに変更して、行の変更を確定した上で
行削除。。。とかいう流れになるのかなぁ。。。
# 行削除のイベントはあるけど行追加は無いですね。。。

> 申し訳ありませんが、もう少し詳しく教えていただけないでしょうか?
当サイトにサンプルコードや説明がありますので、これ以上具体的な
説明をするつもりはありません。もっと具体的な質問ができるまで、
ご自分で勉強されるようお願いいたします。

DOBON.NET | プログラミング道 | プログラミング掲示板