- PR -

bindingについて

1
投稿者投稿内容
こあら
会議室デビュー日: 2003/12/16
投稿数: 4
投稿日時: 2003-12-16 13:52
VB.NETでデータソースとテキストボックスを以下のようにbindingしています。
(数値入力で、列aに"000001"のような書式にしています。)

Private Sub DecimalToUserFormat(ByVal sender As Object, ByVal cevent As _
ConvertEventArgs)

If Not cevent.DesiredType Is GetType(String) Then
Exit Sub
End If

cevent.Value = CDec(cevent.Value).ToString("000000")

End Sub

Private Sub CurrencyStringToDecimal(ByVal sender As Object, ByVal cevent As _
ConvertEventArgs)

If Not cevent.DesiredType Is GetType(Decimal) Then
Exit Sub
End If

cevent.Value = Decimal.Parse(cevent.Value.ToString, "000000", Nothing)
End Sub

Private Sub BindControl()
' Creates the binding first. The OrderAmount is a Decimal type.
Dim b As Binding = New Binding _
("Text", ds, "Table1")
' Add the delegates to the event
AddHandler b.Format, AddressOf DecimalToUserFormat
AddHandler b.Parse, AddressOf CurrencyStringToDecimal
a.DataBindings.Add(b)
End Sub

この状態で、dsのTable1に対して、
 Me.BindingContext(Ds, "Table1").EndCurrentEdit()
Me.BindingContext(Ds, "Table1").AddNew()
を実行し、新規レコードの追加を行おうとすると、
「列XXXに Null を使用することはできません。」
というメッセージがでて、追加できません。

確かに、列XXXは、Nullを許可しないのですが、
AddHandler b.Format, AddressOf DecimalToUserFormat
AddHandler b.Parse, AddressOf CurrencyStringToDecimal
をはずすと、エラーは出ません。

ようするに、バインドしたテキストボックスに書式を適用させ、
新規レコード追加の際に、エラーが出ないようにしたいのですが、
お分かりの方いらっしゃったら、ご教授お願いいたします。
1

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