日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ASP.NET 2.0數(shù)據(jù)教程:給DataRow添加字段級驗證

給DataRow添加字段級驗證是指在插入或更新時檢查業(yè)務對象所涉及到的所有屬性值。拿產(chǎn)品來舉個例,某些字段級的驗證規(guī)則如下所示:

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設、外貿(mào)營銷網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)太和免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

 ·         ProductName字段不得超過40個字符

·         QuantityPerUnit字段不得超過20個字符

·         ProductID、ProductName以及Discontinued字段是必填的,而其他字段則是可填可不填的

·         UnitPrice、UnitsInStock、UnitsOnOrder以及ReorderLevel字段不得小于0

這些規(guī)則可以或者說是應該在數(shù)據(jù)庫層被描述出來。ProductName和QuantityPerUnit字段上的字符數(shù)限制可以通過Products表中相應列的數(shù)據(jù)類型來實現(xiàn)(分別為nvarchar(40) and nvarchar(20))。字段“是否必填”可以通過將數(shù)據(jù)庫中表的相應列設置為“允許為NULL”來實現(xiàn)。為了保證UnitPrice、UnitsInStock、UnitsOnOrder以及ReorderLevel字段的值不小于0,可以分別在它們的相應列上加一個約束。

除了在數(shù)據(jù)庫中應用了這些規(guī)則之外,它們同時也將被其應用在DataSet上。事實上,字段長度和是否允許為空等信息已經(jīng)被應用到了各DataTable的DataColumn集合中。我們可以在數(shù)據(jù)集設計器(DataSet Designer)中看到已經(jīng)存在的字段級驗證,從某個DataTable中選擇一個字段,然后在屬性窗口中就可以找到了。如圖四所示,ProductDataTable中的QuantityPerUnit字段允許空值并且***長度為20各字符。如果我們試圖給某個ProductsDataRow的QuantityPerUnit屬性設置一個長度大于20個字符的字符串,將會有一個ArgumentException被拋出。

圖四:DataColumn提供了基本的字段級驗證

不幸的是,我們不能通過屬性窗口指定一個邊界檢查,比如UnitPrice的值不能小于0。為了提供這樣的字段級驗證,我們需要為DataTable的ColumnChanging事件建立一個Event Handler。正如上一節(jié)教程中所提到的那樣,由類型化數(shù)據(jù)集創(chuàng)建的DataSet、DataTable還有DataRow對象可以通過partial類來進行擴展。使用這個技術,我們可以為ProductDataTable創(chuàng)建一個ColumnChanging的Event Handler。我們先在App_Code文件夾中新建一個名為ProductsDataTable.ColumnChanging.cs的類文件,如下圖所示。

圖五:在App_Code文件夾中添加新類

然后,給ColumnChanging事件創(chuàng)建一個Event handler,以保證UnitPrice、UnitsInStock、UnitsOnOrder以及ReorderLevel字段的值不小于0。如果這些列的值超出范圍就拋出一個ArgumentException。

  
  
  
  
  1. public partial class Northwind    
  2. {    
  3.     public partial class ProductsDataTable    
  4.     {    
  5.         public override void BeginInit()    
  6.          {    
  7.             this.ColumnChanging += ValidateColumn;    
  8.          }    
  9.    
  10.          void ValidateColumn(object sender, DataColumnChangeEventArgs e)    
  11.          {    
  12.             if(e.Column.Equals(this.UnitPriceColumn))    
  13.             {    
  14.                if(!Convert.IsDBNull(e.ProposedValue) && (decimal)e.ProposedValue <  0)    
  15.                {    
  16.                   throw new ArgumentException("UnitPrice cannot be less than zero", "UnitPrice");    
  17.                }    
  18.             }    
  19.             else if (e.Column.Equals(this.UnitsInStockColumn) ||    
  20.                     e.Column.Equals(this.UnitsOnOrderColumn) ||    
  21.                    e.Column.Equals(this.ReorderLevelColumn))    
  22.             {    
  23.                 if (!Convert.IsDBNull(e.ProposedValue) && (short)e.ProposedValue <  0)    
  24.                 {    
  25.                     throw new ArgumentException(string.Format("{0} cannot be less than zero", e.Column.ColumnName), e.Column.ColumnName);    
  26.                 }    
  27.             }    
  28.          }    
  29.     }    
  30. }   

這樣就實現(xiàn)了asp.net 2.0數(shù)據(jù)操作中的業(yè)務邏輯層的第三步:給DataRow添加字段級驗證。

【編輯推薦】

  1. 如何在IIS6.0中部署asp.net mvc程序
  2. 用Winform傻瓜式搭建asp.net mvc框架
  3. ASP.NET Session失效的編程思路
  4. ASP.NET Session 狀態(tài)的存儲
  5. 了解ASP.NET Web應用程序模型
                                                
網(wǎng)站欄目:ASP.NET 2.0數(shù)據(jù)教程:給DataRow添加字段級驗證
網(wǎng)址分享:http://www.dlmjj.cn/article/dhieics.html