Bir ASP.NET Sayfasında BLL ve DAL Düzeyi Özel Durumları İşleme (VB)
tarafından Scott Mitchell
Bu öğreticide, bir ASP.NET veri Web denetiminin ekleme, güncelleştirme veya silme işlemi sırasında bir özel durum oluşması durumunda kolay, bilgilendirici bir hata iletisinin nasıl görüntüleneceğini göreceğiz.
Giriş
Katmanlı uygulama mimarisi kullanarak bir ASP.NET web uygulamasındaki verilerle çalışmak aşağıdaki üç genel adımı içerir:
- İş Mantığı Katmanı'nın hangi yönteminin çağrılması gerektiğini ve bunu geçirmek için hangi parametre değerlerinin gerektiğini belirleyin. Parametre değerleri sabit kodlanabilir, program aracılığıyla atanabilir veya kullanıcı tarafından girilen girişler olabilir.
- yöntemini çağırın.
- Sonuçları işleme. Veri döndüren bir BLL yöntemini çağırırken bu, verilerin bir veri Web denetimine bağlanmasını içerebilir. Verileri değiştiren BLL yöntemleri için bu, bir dönüş değerine göre bazı eylemler gerçekleştirmeyi veya 2. Adımda ortaya çıkabilecek özel durumları düzgün bir şekilde işlemeyi içerebilir.
Önceki öğreticide gördüğümüz gibi, hem ObjectDataSource hem de veri Web denetimleri 1. ve 3. Adımlar için genişletilebilirlik noktaları sağlar. Örneğin GridView, alan değerlerini ObjectDataSource'un UpdateParameters
koleksiyonuna atamadan önce olayını tetiklerRowUpdating
; RowUpdated
olayı ObjectDataSource işlemi tamamladıktan sonra tetikler.
1. Adım sırasında tetiklenen olayları zaten inceledik ve bunların giriş parametrelerini özelleştirmek veya işlemi iptal etmek için nasıl kullanılabileceğini gördük. Bu öğreticide, işlem tamamlandıktan sonra tetikleyen olaylara dikkatimizi çekeceğiz. Bu düzey sonrası olay işleyicileriyle, diğer şeylerin yanında, işlem sırasında bir özel durumun oluşup oluşmadığını belirleyebilir ve standart ASP.NET özel durum sayfasını varsayılan olarak ayarlamak yerine ekranda kolay, bilgilendirici bir hata iletisi görüntüleyerek düzgün bir şekilde işleyebiliriz.
Bu son düzey olaylarla çalışmayı göstermek için, düzenlenebilir bir GridView'da ürünleri listeleyen bir sayfa oluşturalım. Bir ürünü güncelleştirirken özel durum oluşursa ASP.NET sayfamız GridView'un üzerinde bir sorun oluştuğuna ilişkin kısa bir ileti görüntüler. Haydi başlayalım!
1. Adım: Ürünlerin Düzenlenebilir GridView'ını Oluşturma
Önceki öğreticide yalnızca iki alan ProductName
ve UnitPrice
ile düzenlenebilir bir GridView oluşturduk. Bu, her ürün alanı için ProductsBLL
bir parametrenin aksine yalnızca üç giriş parametresini (ürünün adı, birim fiyatı ve kimliği) kabul eden sınıfın UpdateProduct
yöntemi için ek bir aşırı yükleme oluşturulmasını gerektiriyordu. Bu öğreticide, ürünün adını, birim başına miktarını, birim fiyatını ve stoktaki birimleri görüntüleyen ancak yalnızca stoktaki adın, birim fiyatının ve birimlerin düzenlenmesine izin veren düzenlenebilir bir GridView oluşturarak bu tekniği yeniden uygulayalım.
Bu senaryoya UpdateProduct
uyum sağlamak için yöntemin dört parametre kabul eden başka bir aşırı yüklemesine ihtiyacımız olacak: ürünün adı, birim fiyatı, stoktaki birimler ve kimlik. ProductsBLL
sınıfına aşağıdaki yöntemi ekleyin:
<System.ComponentModel.DataObjectMethodAttribute _
(System.ComponentModel.DataObjectMethodType.Update, True)> _
Public Function UpdateProduct _
(ByVal productName As String, ByVal unitPrice As Nullable(Of Decimal), _
ByVal unitsInStock As Nullable(Of Short), ByVal productID As Integer) As Boolean
Dim products As Northwind.ProductsDataTable = _
Adapter.GetProductByProductID(productID)
If products.Count = 0 Then
Return False
End If
Dim product As Northwind.ProductsRow = products(0)
product.ProductName = productName
If Not unitPrice.HasValue Then
product.SetUnitPriceNull()
Else
product.UnitPrice = unitPrice.Value
End If
If Not unitsInStock.HasValue Then
product.SetUnitsInStockNull()
Else
product.UnitsInStock = unitsInStock.Value
End If
Dim rowsAffected As Integer = Adapter.Update(product)
Return rowsAffected = 1
End Function
Bu yöntem tamamlandığında, bu dört ürün alanını düzenlemeye olanak tanıyan ASP.NET sayfasını oluşturmaya hazırız. Klasöründeki sayfayı ErrorHandling.aspx
EditInsertDelete
açın ve Tasarım Aracı aracılığıyla sayfaya bir GridView ekleyin. GridView'u yeni bir ObjectDataSource'a bağlayın, yöntemini sınıfın ProductsBLL
GetProducts()
yöntemine ve Update()
yöntemi UpdateProduct
de yeni oluşturulan aşırı yüklemeye eşleyinSelect()
.
Şekil 1: Dört Giriş Parametresi Kabul Eden Yöntem Aşırı Yüklemesini Kullanma UpdateProduct
(Tam boyutlu görüntüyü görüntülemek için tıklayın)
Bu işlem, dört parametreli bir UpdateParameters
koleksiyona ve ürün alanlarının her biri için bir alana sahip GridView'a sahip bir ObjectDataSource oluşturur. ObjectDataSource'un bildirim temelli işaretlemesi özelliğine OldValuesParameterFormatString
değerini atar. Bu, original_{0}
BLL sınıfımız adlı original_productID
bir giriş parametresinin geçirilmesini beklemediğinden özel duruma neden olur. Bu ayarı bildirim temelli söz diziminden tamamen kaldırmayı unutmayın (veya varsayılan değer {0}
olarak ayarlayın).
Ardından GridView'da yalnızca ProductName
, , QuantityPerUnit
UnitPrice
ve UnitsInStock
BoundField değerlerini içerecek şekilde aşağı doğru ayrıştırın. Ayrıca, gerekli gördüğünüz tüm alan düzeyinde biçimlendirmeleri (özellikleri değiştirme gibi) uygulamaktan HeaderText
çekinmeyin.
Önceki öğreticide BoundField'i hem salt okunur modda hem de düzenleme modunda para birimi olarak biçimlendirmeyi UnitPrice
inceledik. Aynı şeyi burada da yapalım. Bu gerekli ayarın, Şekil 2'de gösterildiği gibi BoundField özelliğini HtmlEncode
{0:c}
DataFormatString
olarak, özelliğini false
olarak ve değerini olarak ayarlamayı gerektirdiğini ApplyFormatInEditMode
true
hatırlayın.
Şekil 2: BoundField'ı UnitPrice
Para Birimi Olarak Görüntülenecek Şekilde Yapılandırma (Tam boyutlu görüntüyü görüntülemek için tıklayın)
UnitPrice
düzenleme arabiriminde değerini para birimi olarak biçimlendirmek için GridView'un RowUpdating
olayı için para birimi biçimlendirilmiş dizeyi bir değere ayrıştıran bir decimal
olay işleyicisi oluşturulması gerekir. Son öğreticideki olay işleyicisinin RowUpdating
de kullanıcının bir UnitPrice
değer sağladığından emin olmak için denetlediğini hatırlayın. Ancak, bu öğretici için kullanıcının fiyatı atmasına izin verelim.
Protected Sub GridView1_RowUpdating(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) _
Handles GridView1.RowUpdating
If e.NewValues("UnitPrice") IsNot Nothing Then
e.NewValues("UnitPrice") = _
Decimal.Parse(e.NewValues("UnitPrice").ToString(), _
System.Globalization.NumberStyles.Currency)
End If
GridView'umuz bir QuantityPerUnit
BoundField içerir, ancak bu BoundField yalnızca görüntüleme amacıyla olmalıdır ve kullanıcı tarafından düzenlenebilir olmamalıdır. Bunu düzenlemek için BoundFields özelliğini ReadOnly
olarak true
ayarlamanız yeterlidir.
Şekil 3: BoundField Read-Only yapın QuantityPerUnit
(Tam boyutlu resmi görüntülemek için tıklayın)
Son olarak, GridView'un akıllı etiketinden Düzenlemeyi Etkinleştir onay kutusunu işaretleyin. Bu adımları ErrorHandling.aspx
tamamladıktan sonra sayfanın Tasarım Aracı Şekil 4'e benzer görünmelidir.
Şekil 4: Gerekli SınırAlanları Dışında Tümünü Kaldır ve Düzenlemeyi Etkinleştir Onay Kutusunu Işaretleyin (tam boyutlu görüntüyü görüntülemek için tıklayın)
Bu noktada tüm ürünlerin ProductName
, QuantityPerUnit
, UnitPrice
ve UnitsInStock
alanlarının bir listesi bulunur; ancak yalnızca ProductName
, UnitPrice
ve UnitsInStock
alanları düzenlenebilir.
Şekil 5: Kullanıcılar artık stok alanlarındaki ürünlerin adlarını, fiyatlarını ve birimlerini kolayca düzenleyebilir (tam boyutlu görüntüyü görüntülemek için tıklayın)
2. Adım: DAL-Level Özel Durumlarını Düzgün bir Şekilde İşleme
Düzenlenebilir GridView'umuz, kullanıcılar düzenlenen ürünün adı, fiyatı ve stoktaki birimleri için yasal değerler girdiğinde harika bir şekilde çalışıyor olsa da, geçersiz değerler girilmesi bir özel durumla sonuçlanır. Örneğin, sınıftaki ProductName
AllowDBNull
özelliğin ProductsRow
özelliği olarak ayarlandığından değerin atlanması NoNullAllowedException'ın oluşmasına ProductName
false
neden olur; veritabanı çalışmıyorsa, veritabanına bağlanmaya çalışırken TableAdapter tarafından bir SqlException
oluşturulur. Herhangi bir eylem gerçekleştirmeden, bu özel durumlar Veri Erişim Katmanı'ndan İş Mantığı Katmanı'na, sonra ASP.NET sayfasına ve son olarak da ASP.NET çalışma zamanına doğru kabarır.
Web uygulamanızın nasıl yapılandırıldığına ve uygulamasından uygulamayı localhost
ziyaret edip etmediğinize bağlı olarak, işlenmeyen bir özel durum genel bir sunucu hata sayfasına, ayrıntılı bir hata raporuna veya kullanıcı dostu bir web sayfasına neden olabilir. ASP.NET çalışma zamanının yakalanmayan özel duruma nasıl yanıt verdiği hakkında daha fazla bilgi için bkz. ASP.NET'da Web Uygulaması Hata İşleme ve customErrors Öğesi .
Şekil 6'da, değeri belirtmeden bir ürünü güncelleştirmeye çalışırken karşılaşılan ekran gösterilmektedir ProductName
. Bu, üzerinden localhost
geçerken görüntülenen varsayılan ayrıntılı hata raporudur.
Şekil 6: Ürünün Adının Atlanması Özel Durum Ayrıntılarını Görüntüler (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Bu tür özel durum ayrıntıları bir uygulamayı test ederken yararlı olsa da, bir özel durum karşısında son kullanıcıya böyle bir ekran sunmak idealden daha düşüktür. Son kullanıcı büyük olasılıkla a'nın ne NoNullAllowedException
olduğunu veya neden kaynaklandığını bilmez. Daha iyi bir yaklaşım, kullanıcıya ürünü güncelleştirmeye çalışırken sorun olduğunu açıklayan daha kolay bir ileti sunmaktır.
İşlem gerçekleştirilirken bir özel durum oluşursa, hem ObjectDataSource hem de veri Web denetimindeki son düzey olaylar bunu algılamak ve özel durumun ASP.NET çalışma zamanına kadar kabarcıklanmasını iptal etmek için bir araç sağlar. Örneğimizde, GridView'un RowUpdated
olayı için bir özel durumun tetiklenip tetiklenmediğini belirleyen bir olay işleyicisi oluşturalım ve tetiklenmişse label Web denetiminde özel durum ayrıntılarını görüntüleyelim.
ASP.NET sayfasına bir Etiket ekleyerek, özelliğini olarak ayarlayarak ID
ve özelliğini ExceptionDetails
temizleyerek Text
başlayın. Kullanıcının gözünü bu iletiye çekmek için özelliğini Warning
olarak ayarlayınCssClass
. Bu, önceki öğreticide dosyaya Styles.css
eklediğimiz css sınıfıdır. Bu CSS sınıfının Label metninin kırmızı, italik, kalın ve fazladan büyük yazı tipinde görüntülenmesine neden olduğunu hatırlayın.
Şekil 7: Sayfaya Etiket Web Denetimi Ekleme (Tam boyutlu resmi görüntülemek için tıklayın)
Bu Label Web denetiminin yalnızca bir özel durum oluştuktan hemen sonra görünür olmasını istediğimizden, olay işleyicisinde Page_Load
özelliğini false olarak ayarlayınVisible
:
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
ExceptionDetails.Visible = False
End Sub
Bu kodla, ilk sayfa ziyaretinde ve izleyen geri göndermelerde denetimin ExceptionDetails
Visible
özelliği olarak false
ayarlanır. GridView'un RowUpdated
olay işleyicisinde algıladığımız DAL veya BLL düzeyinde bir özel durum karşısında denetimin ExceptionDetails
Visible
özelliğini true olarak ayarlayacağız. Web denetimi olay işleyicileri, sayfa yaşam döngüsündeki Page_Load
olay işleyiciden sonra gerçekleştiğinden Etiket gösterilir. Ancak, bir sonraki geri göndermede Page_Load
, olay işleyicisi özelliğine geri döndürecek Visible
false
ve yeniden görünümden gizleyecektir.
Not
Alternatif olarak, bildirim temelli söz diziminde özelliğini atayarak Visible
ve görünüm durumunu devre dışı bırakarak (özelliğini olarak ayarlayarak) denetimin Visible
özelliğini false
false
ayarlama gereksinimini EnableViewState
kaldırabiliriz.Page_Load
ExceptionDetails
Bu alternatif yaklaşımı gelecek bir öğreticide kullanacağız.
Etiket denetimi eklendiyse sonraki adımımız GridView'un RowUpdated
olayı için olay işleyicisi oluşturmaktır. Tasarım Aracı GridView'u seçin, Özellikler penceresi gidin ve GridView'un olaylarını listeleyen şimşek simgesine tıklayın. Bu öğreticinin önceki bölümlerinde bu olay için bir olay işleyici oluşturduğumuz için GridView RowUpdating
olayı için zaten bir giriş olmalıdır. Olay için RowUpdated
de bir olay işleyicisi oluşturun.
Şekil 8: GridView RowUpdated
Olayı için Olay İşleyicisi Oluşturma
Not
Olay işleyicisini arkadaki kod sınıfı dosyasının en üstündeki açılan listeler aracılığıyla da oluşturabilirsiniz. Soldaki açılan listeden GridView'ı ve RowUpdated
sağdakinden olayı seçin.
Bu olay işleyicisinin oluşturulması, ASP.NET sayfasının arka planda kod sınıfına aşağıdaki kodu ekler:
Protected Sub GridView1_RowUpdated(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs) _
Handles GridView1.RowUpdated
End Sub
Bu olay işleyicisinin ikinci giriş parametresi, özel durumları işlemek için üç özelliği olan GridViewUpdatedEventArgs türünde bir nesnedir:
Exception
atılan özel duruma bir başvuru; Özel durum oluşturmadıysa, bu özellik şu değere sahip olur:null
ExceptionHandled
Özel durumun olay işleyicisindeRowUpdated
işlenip işlenmediğini belirten bir Boole değeri; (varsayılan) isefalse
, özel durum yeniden oluşturulur ve ASP.NET çalışma zamanına uygulanırKeepInEditMode
düzenlenmiş GridView satırınatrue
ayarlanırsa düzenleme modunda kalır; (false
varsayılan), GridView satırı salt okunur moduna geri döner
Bu durumda kodumuzun olup olmadığını Exception
null
denetlemesi gerekir. Bu, işlem gerçekleştirilirken bir özel durum oluştuğu anlamına gelir. Böyle bir durumda şunları yapmak isteriz:
- Etikette
ExceptionDetails
kullanıcı dostu bir ileti görüntüleme - Özel durumun işlendiğini belirtin
- GridView satırını düzenleme modunda tutma
Aşağıdaki kod bu hedefleri gerçekleştirir:
Protected Sub GridView1_RowUpdated(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs) _
Handles GridView1.RowUpdated
If e.Exception IsNot Nothing Then
ExceptionDetails.Visible = True
ExceptionDetails.Text = "There was a problem updating the product. "
If e.Exception.InnerException IsNot Nothing Then
Dim inner As Exception = e.Exception.InnerException
If TypeOf inner Is System.Data.Common.DbException Then
ExceptionDetails.Text &= _
"Our database is currently experiencing problems." & _
"Please try again later."
ElseIf TypeOf inner _
Is System.Data.NoNullAllowedException Then
ExceptionDetails.Text += _
"There are one or more required fields that are missing."
ElseIf TypeOf inner Is ArgumentException Then
Dim paramName As String = CType(inner, ArgumentException).ParamName
ExceptionDetails.Text &= _
String.Concat("The ", paramName, " value is illegal.")
ElseIf TypeOf inner Is ApplicationException Then
ExceptionDetails.Text += inner.Message
End If
End If
e.ExceptionHandled = True
e.KeepInEditMode = True
End If
End Sub
Bu olay işleyicisi, olup olmadığını e.Exception
null
denetleyerek başlar. Değilse, ExceptionDetails
Label'ın Visible
özelliği olarak true
ve Text
özelliği "Ürün güncelleştirilirken bir sorun oluştu" olarak ayarlanır. Oluşan gerçek özel durumun ayrıntıları nesnenin InnerException
özelliğinde e.Exception
bulunur. Bu iç özel durum incelenmiştir ve belirli bir türdeyse Label Text
özelliğine ExceptionDetails
ek, yararlı bir ileti eklenir. Son olarak, ExceptionHandled
ve KeepInEditMode
özelliklerinin her ikisi de olarak true
ayarlanır.
Şekil 9'da ürünün adı atlandığında bu sayfanın ekran görüntüsü gösterilir; Şekil 10'da geçersiz UnitPrice
bir değer (-50) girilirken eldeki sonuçlar gösterilir.
Şekil 9: ProductName
BoundField Bir Değer İçermelidir (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Şekil 10: Negatif UnitPrice
Değerlere İzin Verilmiyor (Tam boyutlu görüntüyü görüntülemek için tıklayın)
özelliğini true
RowUpdated
olarak ayarlayarak e.ExceptionHandled
olay işleyicisi özel durumu işlediğini belirtmiştir. Bu nedenle, özel durum ASP.NET çalışma zamanına yayılmaz.
Not
Şekil 9 ve 10'da geçersiz kullanıcı girişi nedeniyle oluşan özel durumları işlemek için düzgün bir yol gösterilmektedir. ancak, ASP.NET sayfasının sınıfın UpdateProduct
yöntemini çağırmadan önce kullanıcının girişlerinin geçerli olduğundan emin olması gerektiğinden, bu tür geçersiz girişler iş mantığı katmanına ProductsBLL
asla ulaşmaz. Sonraki öğreticimizde, İş Mantığı Katmanı'na gönderilen verilerin iş kurallarına uygun olduğundan emin olmak için arabirimleri düzenleme ve ekleme işlemlerine doğrulama denetimleri eklemeyi öğreneceksiniz. Doğrulama denetimleri yalnızca kullanıcı tarafından sağlanan veriler geçerli olana kadar yöntemin UpdateProduct
çağrılmasını önlemekle kalmaz, aynı zamanda veri girişi sorunlarını tanımlamak için daha bilgilendirici bir kullanıcı deneyimi sağlar.
3. Adım: BLL-Level Özel Durumlarını Düzgün bir şekilde İşleme
Veri eklerken, güncelleştirirken veya silerken, Veri Erişim Katmanı verilerle ilgili bir hata karşısında bir özel durum oluşturabilir. Veritabanı çevrimdışı olabilir, gerekli bir veritabanı tablosu sütununda belirtilen bir değer olmayabilir veya tablo düzeyi kısıtlaması ihlal edilmiş olabilir. İş Mantığı Katmanı, verilerle ilgili özel durumlara ek olarak, iş kurallarının ne zaman ihlal edildiğini belirtmek için özel durumları kullanabilir. Örneğin İş Mantığı Katmanı Oluşturma öğreticisinde, özgün UpdateProduct
aşırı yüklemeye bir iş kuralı denetimi ekledik. Özellikle, kullanıcı bir ürünü sonlandırıldı olarak işaretliyorsa, ürünün tedarikçi tarafından sağlanan tek ürün olmamasını gerekli kıldık. Bu koşul ihlal edildiyse, bir ApplicationException
oluşturuldu.
UpdateProduct
Bu öğreticide oluşturulan aşırı yükleme için, alanın özgün UnitPrice
değerin iki katından UnitPrice
fazla olan yeni bir değere ayarlanmasını engelleyen bir iş kuralı ekleyelim. Bunu yapmak için aşırı yüklemeyi bu denetimi gerçekleştirecek ve kural ihlal edilirse bir ApplicationException
oluşturacak şekilde ayarlayınUpdateProduct
. Güncelleştirilmiş yöntem aşağıdaki gibidir:
<System.ComponentModel.DataObjectMethodAttribute _
(System.ComponentModel.DataObjectMethodType.Update, True)> _
Public Function UpdateProduct(ByVal productName As String, _
ByVal unitPrice As Nullable(Of Decimal), ByVal unitsInStock As Nullable(Of Short), _
ByVal productID As Integer) As Boolean
Dim products As Northwind.ProductsDataTable = Adapter.GetProductByProductID(productID)
If products.Count = 0 Then
Return False
End If
Dim product As Northwind.ProductsRow = products(0)
If unitPrice.HasValue AndAlso Not product.IsUnitPriceNull() Then
If unitPrice > product.UnitPrice * 2 Then
Throw New ApplicationException( _
"When updating a product price," & _
" the new price cannot exceed twice the original price.")
End If
End If
product.ProductName = productName
If Not unitPrice.HasValue Then
product.SetUnitPriceNull()
Else
product.UnitPrice = unitPrice.Value
End If
If Not unitsInStock.HasValue Then
product.SetUnitsInStockNull()
Else
product.UnitsInStock = unitsInStock.Value
End If
Dim rowsAffected As Integer = Adapter.Update(product)
Return rowsAffected = 1
End Function
Bu değişiklikle, mevcut fiyatın iki katından fazla olan herhangi bir fiyat güncelleştirmesi bir ApplicationException
atılmaya neden olur. DAL'den alınan özel durum gibi, bu BLL yükseltilmiş ApplicationException
de GridView'un RowUpdated
olay işleyicisinde algılanabilir ve işlenebilir. Aslında, olay işleyicisinin RowUpdated
kodu yazıldıkçe bu özel durumu doğru bir şekilde algılar ve 'nin Message
özellik değerini görüntülerApplicationException
. Şekil 11'de, kullanıcı Chai'nin fiyatını 50,00 TL'ye güncelleştirmeye çalıştığında ekran görüntüsü gösterilir ve bu da geçerli fiyatı olan 19,95 TL'nin iki katından fazladır.
Şekil 11: İş Kuralları, Bir Ürünün Fiyatının İki Katından Fazla Olan Fiyat Artışlarına İzin Verme (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Not
İdeal olarak iş mantığı kurallarımız, yöntem aşırı yüklemelerinin dışında UpdateProduct
ve ortak bir yöntemde yeniden düzenlenmiş olacaktır. Bu, okuyucu için bir alıştırma olarak bırakılır.
Özet
Ekleme, güncelleştirme ve silme işlemleri sırasında hem veri Web denetimi hem de ObjectDataSource gerçek işlemi ön ve son düzey olayları tetikledi. Bu öğreticide ve önceki öğreticide gördüğümüz gibi, düzenlenebilir bir GridView ile çalışırken GridView'un RowUpdating
olayı tetiklenir ve ardından ObjectDataSource'un Updating
olayı gelir ve bu noktada ObjectDataSource'un temel nesnesine güncelleştirme komutu yapılır. İşlem tamamlandıktan sonra ObjectDataSource'un Updated
olayı ve ardından GridView RowUpdated
olayı tetiklenir.
Giriş parametrelerini özelleştirmek veya işlemin sonuçlarını incelemek ve yanıtlamak için son düzey olaylar için ön düzey olaylar için olay işleyicileri oluşturabiliriz. Son düzey olay işleyicileri en yaygın olarak işlem sırasında bir özel durumun oluşup oluşmadığını algılamak için kullanılır. Bir özel durum karşısında, bu son düzey olay işleyicileri isteğe bağlı olarak özel durumu kendi başlarına işleyebilir. Bu öğreticide, kolay bir hata iletisi görüntüleyerek böyle bir özel durumun nasıl işleneceğini gördük.
Bir sonraki öğreticide, veri biçimlendirme sorunlarından kaynaklanan özel durumların (negatif UnitPrice
girme gibi) olasılığının nasıl az olduğunu göreceğiz. Özellikle, düzenleme ve ekleme arabirimlerine doğrulama denetimleri eklemeyi inceleyeceğiz.
Mutlu Programlama!
Yazar hakkında
Yedi ASP/ASP.NET kitabının yazarı ve 4GuysFromRolla.com kurucusu Scott Mitchell, 1998'den beri Microsoft Web teknolojileriyle çalışmaktadır. Scott bağımsız bir danışman, eğitmen ve yazar olarak çalışmaktadır. Son kitabı Sams Teach Yourself ASP.NET 24 Saat içinde 2.0. Adresine adresinden veya adresinden ulaşabileceğiniz http://ScottOnWriting.NETblogu aracılığıyla ulaşabilirsinizmitchell@4GuysFromRolla.com.
Özel Teşekkürler
Bu öğretici serisi birçok yararlı gözden geçiren tarafından gözden geçirildi. Bu öğreticinin baş gözden geçireni Liz Shulok oldu. Yaklaşan MSDN makalelerimi gözden geçirmek istiyor musunuz? Öyleyse, bana bir satır mitchell@4GuysFromRolla.combırakın.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin