成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET 2.0數(shù)據(jù)教程:給DataRow添加字段級驗(yàn)證

開發(fā) 后端
本文主要介紹了asp.net 2.0數(shù)據(jù)操作中的業(yè)務(wù)邏輯層的第三步:給DataRow添加字段級驗(yàn)證。

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

 ·         ProductName字段不得超過40個(gè)字符

·         QuantityPerUnit字段不得超過20個(gè)字符

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

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

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

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

DataColumn提供了基本的字段級驗(yàn)證 

圖四:DataColumn提供了基本的字段級驗(yàn)證

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

在App_Code文件夾中添加新類 

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

然后,給ColumnChanging事件創(chuàng)建一個(gè)Event handler,以保證UnitPrice、UnitsInStock、UnitsOnOrder以及ReorderLevel字段的值不小于0。如果這些列的值超出范圍就拋出一個(gè)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. }   

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

【編輯推薦】

  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應(yīng)用程序模型

責(zé)任編輯:book05 來源: 博客園
相關(guān)推薦

2009-07-24 16:55:53

添加aspx頁面

2009-07-24 13:08:03

BLL類ASP.NET 2.0

2009-07-24 14:23:16

定制編碼DAL

2009-07-27 03:21:00

breadcrumb導(dǎo)

2009-07-24 17:08:31

添加站點(diǎn)地圖asp.net

2009-07-27 09:28:55

TableAdapte

2009-07-27 03:23:00

Default.asp

2009-07-24 13:45:28

添加參數(shù)化

2009-07-27 08:51:24

ObjectDataS

2009-07-24 17:15:52

SiteMapData

2009-07-27 16:09:05

GridView顯示數(shù)

2009-07-27 09:35:57

業(yè)務(wù)邏輯層

2009-07-24 12:41:21

BLL類

2009-07-24 16:37:04

創(chuàng)建母版頁asp.net 2.0

2009-07-27 16:22:54

GridView選擇行

2009-07-27 09:01:44

ObjectDataS

2009-07-24 13:25:43

創(chuàng)建數(shù)據(jù)訪問層

2010-06-25 08:51:46

ASP.NET MVC

2009-07-27 09:39:04

SelectMetho

2009-07-23 14:43:24

數(shù)據(jù)源控件ASP.NET 2.0
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美不卡一区二区三区 | 国产一卡二卡三卡 | 国产午夜精品一区二区三区在线观看 | 视频第一区 | 欧美又大粗又爽又黄大片视频 | 久久精品视频12 | 国产乱码一区 | 中文av在线播放 | 亚洲福利一区二区 | 人成久久 | 特黄色一级毛片 | 久草网免费 | 97精品超碰一区二区三区 | 国产欧美一区二区精品久导航 | 91毛片在线看 | 视频一区二区在线观看 | 欧美性一级 | 国产精品日韩欧美一区二区三区 | 最新伦理片 | 久久综合狠狠综合久久综合88 | 欧美日韩成人 | 日韩欧美精品在线 | 色噜噜色综合 | 黑人成人网| 亚洲网站免费看 | 久久久国产一区二区三区四区小说 | 国产高清在线精品一区二区三区 | 午夜视频在线观看网站 | 国产日日操 | 91精品国产麻豆 | 国产精品欧美一区二区 | 国产日本精品视频 | 久久久亚洲 | 亚洲乱码一区二区三区在线观看 | 免费在线观看一区二区三区 | 91久久综合 | 日本三级网址 | 91久久久久久久久久久久久 | av网站在线播放 | 亚洲最大成人综合 | 日韩精品一区二区三区免费观看 |