VB.NET修改數(shù)據(jù)窗體向?qū)嚓P(guān)問題解疑
VB.NET對于窗體的操作對于經(jīng)常使用VB.NET語言進(jìn)行開發(fā)的人員來時(shí)已經(jīng)不是什么很難的問題了。不過其中還是有些小的應(yīng)用技巧,需要我們不斷的積累經(jīng)驗(yàn)才能真正的掌握其中的精髓之處。比如今天為大家介紹的VB.NET修改數(shù)據(jù)窗體向?qū)У膽?yīng)用技巧等。
使用數(shù)據(jù)窗體向?qū)В―ata Form Wizard)你能迅速獲得文件操作程序窗體。為了使用它,選擇Project菜單的Add New Item,接著選擇Data Form(數(shù)據(jù)窗體)。該向?qū)⒁徊揭徊綆椭阒付ㄏM臄?shù)據(jù),并為那些數(shù)據(jù)建立一個(gè)文件操作程序。圖1顯示了一個(gè)從Northwind數(shù)據(jù)庫的Products表中產(chǎn)生的數(shù)據(jù)窗體。
圖1 Northwind Products表的文件維護(hù)窗體,它由數(shù)據(jù)窗體向?qū)Мa(chǎn)生
但是這種自動(dòng)生成程序有一個(gè)重要的限制。如果被訪問的數(shù)據(jù)有任何字段不能為空(因?yàn)閿?shù)據(jù)庫大綱不允許空值),那么向?qū)傻某绦虿荒芴砑佑涗?。?dāng)點(diǎn)擊Add按鈕時(shí),將出現(xiàn)錯(cuò)誤信息,提示記錄中的***個(gè)字段不允許為空(如果你沒有***的服務(wù)包,你也許看不到該錯(cuò)誤信息,但是程序拒絕添加記錄)。
該問題是由于VB.NET修改數(shù)據(jù)窗體向?qū)r(shí)使用BindingContext對象給綁定的數(shù)據(jù)表添加了一行。下面是btnAdd_Click事件程序失敗的代碼:
- Me.BindingContext(objProducts, "Products").ddNew()
解決方法是為新行略過BindingContext對象。下面是添加新行的典型代碼,該代碼應(yīng)該代替上面的一行代碼:
- Dim dr As DataRow
- dr = objProducts.Tables("Products").NewRow
- dr.Item("ProductName") = ""
- dr.Item("Discontinued") = False
- ' Set any other fields that cannot null to default values.
- objProducts.Tables("Products").Rows.Add(dr)
在用數(shù)據(jù)表的NewRow方法獲得一個(gè)空行時(shí),該代碼給不能為空的字段填充值。接著數(shù)據(jù)表接受新行,通過數(shù)據(jù)表行集合的Add方法添加新行。
有了這個(gè)補(bǔ)丁后,該數(shù)據(jù)程序能夠運(yùn)行??梢詫λM(jìn)行增強(qiáng)或改變,例如改變SupplierID 和CategoryID字段以從包含供應(yīng)商和類別的下拉列表中選擇。
VB.NET修改數(shù)據(jù)窗體向?qū)У南嚓P(guān)應(yīng)用方法就為大家介紹到這里。
【編輯推薦】