簡(jiǎn)單描述VB.NET數(shù)據(jù)窗體
在向大家詳細(xì)介紹VB.NET數(shù)據(jù)窗體之前,首先讓大家了解下使用BindingContext對(duì)象,然后全面介紹VB.NET數(shù)據(jù)窗體。
使用VB.NET數(shù)據(jù)窗體向?qū)В―ata Form Wizard)你能迅速獲得文件操作程序窗體。為了使用它,選擇Project菜單的Add New Item,接著選擇Data Form(VB.NET數(shù)據(jù)窗體)。該向?qū)⒁徊揭徊綆椭阒付ㄏM臄?shù)據(jù),并為那些數(shù)據(jù)建立一個(gè)文件操作程序。
但是這種自動(dòng)生成程序有一個(gè)重要的限制。如果被訪問的數(shù)據(jù)有任何字段不能為空(因?yàn)閿?shù)據(jù)庫(kù)大綱不允許空值),那么向?qū)傻某绦虿荒芴砑佑涗?。?dāng)點(diǎn)擊Add按鈕時(shí),將出現(xiàn)錯(cuò)誤信息,提示記錄中的***個(gè)字段不允許為空(如果你沒有***的服務(wù)包,你也許看不到該錯(cuò)誤信息,但是程序拒絕添加記錄)。
該問題是由于VB.NET數(shù)據(jù)窗體向?qū)褂肂indingContext對(duì)象給綁定的數(shù)據(jù)表添加了一行。下面是btnAdd_Click事件程序失敗的代碼:
- Me.BindingContext(objProducts, "Products")。AddNew()
解決方法是為新行略過BindingContext對(duì)象。下面是添加新行的典型代碼,該代碼應(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)行??梢詫?duì)它進(jìn)行增強(qiáng)或改變,例如改變SupplierID 和CategoryID字段以從包含供應(yīng)商和類別的下拉列表中選擇。
【編輯推薦】