这个问题一直没有得到解答.希望高手关注!(只能选择100分,问题解答之后额外追分,谢谢!)
环境:
VB 2005,SQL 2005,Win XP
问题描述:
首先,我有已经赋值的SqlDataAdapter和DataSet
Dim Adapter As SqlDataAdapter
Dim Dt As DataSet
'具体赋值代码略去(连接数据库,查询数据库云云)
然后我将窗体上的文本框TextBox1与数据库绑定.
使用的如下方法:
TextBox1.DataBindings.Clear()
TextBox1.DataBindings.Add("Text", Dt, "表1.字段1")
此时,TextBox1已经和数据库中表1的字段1实现了绑定.
其可以显示出字段1的内容.
然后,我使用如下代码来实现更新数据库内容:
Me.BindingContext(Dt, "表1").EndCurrentEdit()
Dim dffTbl As DataTable = Dt.Tables("表1").GetChanges
Adapter.Update(dffTbl)
此时,TextBox1的变化已经可以更新到数据库.
接着,问题来了!!!!!
如果字段1是个int字段,只接受数字,而用户又在TextBox1中输入了"abc",那么,在执行更新操作时,就会报错!
如果字段1是个Varchar(2)字段,只能输入2个字符,而用户输入了"12345",那么,也会报错!
我想请教的是,如何实现Textbox1的输入验证?
也就是在用户输入非法内容的时候,给出相应提示!
请注意,我希望的是一个通用的办法!
例如,若字段1是int,那么TextBox1只能输入整数;如果字段1是varchar(2),那么只能输入varchar(2)的内容;如果....
就是让Textbox1适应所有的字段类型!
即使绑定字段的发生了变化,Textbox1的验证也要准确无误!
诚心请教高手来为我解答疑问!
(就此绑定问题解答,暂时不希望使用其他绑定办法!)
为了帮助高手了解问题,我再给出工程中的部分代码,希望对解决问题有所帮助.
Dim Adapter As SqlDataAdapter
Dim Dt As DataSet
'读出数据按钮
Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Adapter = DBUnit.GetAdapter("SELECT * FROM AccountTbl WHERe Username='blue'") 'DBUnit是一个数据库操作类,不必在意
Dim builder As SqlCommandBuilder
builder = New SqlCommandBuilder(Adapter)
builder.QuotePrefix = "["
builder.QuoteSuffix = "]"
Dt = New DataSet
Adapter.Fill(Dt, "AccountTbl")
TextBox1.DataBindings.Clear()
TextBox2.DataBindings.Clear()
TextBox1.DataBindings.Add("Text", Dt, "AccountTbl.Username")
TextBox2.DataBindings.Add("Text", Dt, "AccountTbl.Password")
End Sub
'更新数据按钮
Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.BindingContext(Dt, "AccountTbl").EndCurrentEdit()
Dim dffTbl As DataTable = Dt.Tables("AccountTbl").GetChanges
If dffTbl IsNot Nothing Then
Adapter.Update(dffTbl)
Dt.Merge(dffTbl)
Dt.AcceptChanges()
Dt.Tables("AccountTbl").Clear()
Adapter.Fill(Dt, "AccountTbl")
End If
End Sub