Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
tarafından Scott Mitchell
Önceki öğreticilerde ObjectDataSource denetiminin veri ekleme, güncelleştirme ve silme işlemlerine nasıl izin verdiklerini öğrendik. SqlDataSource denetimi aynı işlemleri destekler, ancak yaklaşım farklıdır ve bu öğreticide SqlDataSource'un verileri eklemek, güncelleştirmek ve silmek için nasıl yapılandırleneceği gösterilir.
Giriş
Ekleme, Güncelleştirme ve Silmeye Genel Bakış bölümünde açıklandığı gibi, GridView denetimi yerleşik güncelleştirme ve silme özellikleri sağlarken DetailsView ve FormView denetimleri, düzenleme ve silme işlevlerinin yanı sıra destek eklemeyi de içerir. Bu veri değiştirme özellikleri, bir kod satırının yazılması gerekmeden doğrudan bir veri kaynağı denetimine eklenebilir. Ekleme, Güncelleştirme ve Silmeye Genel Bakış, GridView, DetailsView ve FormView denetimleriyle ekleme, güncelleştirme ve silme işlemlerini kolaylaştırmak için ObjectDataSource kullanılarak incelendi. Alternatif olarak, SqlDataSource, ObjectDataSource yerine kullanılabilir.
ObjectDataSource ile ekleme, güncelleştirme ve silmeyi desteklemek için ekleme, güncelleştirme veya silme eylemini gerçekleştirmek üzere çağrılacak nesne katmanı yöntemlerini belirtmemiz gerektiğini hatırlayın. SqlDataSource ile yürütmek için INSERT, UPDATE ve DELETE SQL ifadeleri (veya saklı yordamlar) sağlamamız gerekir. Bu öğreticide göreceğimiz gibi, bu deyimler el ile oluşturulabilir veya SqlDataSource'un Veri Kaynağını Yapılandırma sihirbazı tarafından otomatik olarak oluşturulabilir.
Uyarı
GridView, DetailsView ve FormView denetimlerinin ekleme, düzenleme ve silme özelliklerini zaten ele aldığımızdan, bu öğretici sqlDataSource denetimini bu işlemleri destekleyecek şekilde yapılandırmaya odaklanacaktır. GridView, DetailsView ve FormView'da bu özellikleri uygulama konusunda bilgi sahibi olmanız gerekiyorsa Ekleme, Güncelleştirme ve Silmeye Genel Bakış'tan başlayarak Veri Düzenleme, Ekleme ve Silme öğreticilerine geri dönün.
1. Adım: INSERT, UPDATE ve DELETE Deyimlerini Belirtme
Son iki öğreticide gördüğümüz gibi, bir SqlDataSource denetiminden veri almak için iki özellik ayarlamamız gerekir:
-
ConnectionString, sorgunun gönderildiği veritabanını belirtir ve -
SelectCommand, sonuçları döndürmek için yürütülecek geçici SQL deyimini veya saklı yordam adını belirtir.
Parametreleri olan değerler için SelectCommand , parametre değerleri SqlDataSource SelectParameters koleksiyonu aracılığıyla belirtilir ve sabit kodlanmış değerler, ortak parametre kaynak değerleri (sorgu dizesi alanları, oturum değişkenleri, Web denetimi değerleri vb.) içerebilir veya program aracılığıyla atanabilir. SqlDataSource denetimi s Select() yöntemi program aracılığıyla veya veri Web denetiminden otomatik olarak çağrıldığında, veritabanına bir bağlantı kurulur, parametre değerleri sorguya atanır ve komut veritabanına yönlendirilir. Ardından sonuçlar, denetim s DataSourceMode özelliğinin değerine bağlı olarak DataSet veya DataReader olarak döndürülür.
SqlDataSource denetimi, veri seçmenin yanı sıra , INSERTve SQL deyimlerini aynı şekilde sağlayarak UPDATEveri eklemek, güncelleştirmek ve DELETE silmek için de kullanılabilir. Yürütülecek InsertCommand, UpdateCommand, ve DeleteCommand özelliklerine INSERT, UPDATEve DELETE SQL deyimlerini atamanız yeterlidir. Deyimlerin parametreleri varsa (çoğu zaman olduğu gibi), bunları InsertParameters, UpdateParameters ve DeleteParameters koleksiyonlarına ekleyin.
Bir InsertCommand, UpdateCommandveya DeleteCommand değeri belirtildikten sonra, ilgili veri Web denetiminin akıllı etiketindeki Eklemeyi Etkinleştir, Düzenlemeyi Etkinleştir veya Silmeyi Etkinleştir seçeneği kullanılabilir duruma gelir. Bunu göstermek için Querying.aspx öğreticisinde oluşturduğumuz sayfadan bir örnek alalım ve silme özelliklerini içerecek şekilde geliştirelim.
İlk olarak InsertUpdateDelete.aspx klasöründen Querying.aspx ve SqlDataSource sayfalarını açın. Tasarımcı'nın Querying.aspx sayfasında, ilk örnekteki SqlDataSource ve GridView (yani ProductsDataSource ve GridView1 denetimlerini) seçin. İki denetimi seçtikten sonra Düzenle menüsüne gidin ve Kopyala'yı seçin (veya yalnızca Ctrl+C tuşlarına basın). Sonra Tasarım Aracı'na InsertUpdateDelete.aspx gidin ve kontrolleri yapıştırın. İki denetimi InsertUpdateDelete.aspx üzerine taşıdıktan sonra, sayfayı tarayıcıda test edin. Veritabanı tablosundaki tüm kayıtların ProductIDProductName , UnitPriceve Products sütunlarının değerlerini görmeniz gerekir.
Şekil 1: Tüm Ürünler Listelendi, Sıralandı ProductID (Tam boyutlu görüntüyü görüntülemek için tıklayın)
SqlDataSource'un DeleteCommand ve DeleteParameters Özelliklerini Ekleme
Bu noktada, tüm kayıtları Products tablosundan döndüren bir SqlDataSource ve bu verileri temsil eden bir GridView var. Hedefimiz, bu örneği kullanıcının GridView aracılığıyla ürünleri silmesine izin verecek şekilde genişletmektir. Bunu başarmak için SqlDataSource denetimi ve DeleteCommand özellikleri için değerler belirtmemiz ve DeleteParameters ardından GridView'ı silmeyi destekleyecek şekilde yapılandırmamız gerekir.
DeleteCommand ve DeleteParameters özellikleri çeşitli yollarla belirtilebilir:
- Deklaratif sözdizimi aracılığıyla
- Tasarımcı'daki Özellikler penceresinden
- Veri Kaynağını Yapılandırma sihirbazında, özel bir SQL ifadesi veya saklı yordam belirleme ekranından
- Görünüm tablosundan sütunları belirt ekranındaki Gelişmiş düğmesi aracılığıyla, Veri Kaynağını Yapılandırma sihirbazında,
DELETEveDeleteCommandözelliklerinde kullanılanDeleteParametersSQL ifadesi ve parametre koleksiyonunu otomatik olarak oluşturacak.
2. Adımda DELETE ifadesinin nasıl otomatik olarak oluşturulacağını inceleyeceğiz. Şimdilik, Veri Kaynağını Yapılandır sihirbazı veya bildirim temelli söz dizimi seçeneği de aynı şekilde çalışsa da Tasarımcı'daki Özellikler penceresini kullanalım.
içindeki Tasarımcı'dan InsertUpdateDelete.aspxSqlDataSource'a ProductsDataSource tıklayın ve ardından Özellikler penceresini açın (Görünüm menüsünde Özellikler penceresini seçin veya F4'e basın). DeleteQuery özelliğini seçin, ekranınızda bir dizi üç nokta belirecektir.
Şekil 2: Özellikler Penceresinden DeleteQuery Özelliğini Seçin
Uyarı
SqlDataSource'un DeleteQuery özelliği yoktur. Aksine, DeleteQuery, DeleteCommand ve DeleteParameters özelliklerinin bir bileşimidir ve yalnızca Tasarımcı aracılığıyla pencereyi görüntülerken Özellikler penceresinde listelenir. Kaynak görünümünde Özellikler penceresine bakıyorsanız, bunun yerine DeleteCommand özelliğini bulabilirsiniz.
DeleteQuery özelliğindeki üç noktaya tıklayarak Komut ve Parametre Düzenleyicisi iletişim kutusunu açın (bkz. Şekil 3). Bu iletişim kutusunda SQL deyimini DELETE belirtebilir ve parametreleri belirtebilirsiniz. Komut metin kutusuna DELETE aşağıdaki sorguyu girin (isterseniz el ile veya Sorgu Oluşturucusu'nu kullanarak):
DELETE FROM Products
WHERE ProductID = @ProductID
Ardından, parametreyi aşağıdaki parametre listesine eklemek @ProductID için Parametreleri Yenile düğmesine tıklayın.
DELETE komut parametreleri listesine parametresinin eklendiği ." />
Şekil 3: Özellikler Penceresinden DeleteQuery Özelliğini Seçin (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Bu parametre için bir değer sağlamayın (Parametre kaynağını Yok olarak bırakın). GridView'a silme desteği ekledikten sonra GridView, Sil düğmesine tıklanan satır için koleksiyonunun DataKeys değerini kullanarak bu parametre değerini otomatik olarak sağlar.
Uyarı
Sorguda DELETE kullanılan parametre adı GridView, DetailsView veya FormView'daki değerin adıyla aynı DataKeyNames. Yani, DELETE ifadesindeki parametre, Products tablosundaki birincil anahtar sütun adı @ProductID (ve dolayısıyla GridView'deki DataKeyNames değeri) olduğundan, özellikle @ID olarak adlandırılmıştır (mesela ProductID yerine).
Parametre adı ve DataKeyNames değeri eşleşmiyorsa, GridView koleksiyonundaki DataKeys değeri otomatik olarak parametreye atayamaz.
Silmeyle ilgili bilgileri Komut ve Parametre Düzenleyicisi iletişim kutusuna girdikten sonra Tamam'a tıklayın ve kaynak görünümüne giderek sonuçta elde edilen bildirim temelli işaretlemeyi inceleyin:
<asp:SqlDataSource ID="ProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
SelectCommand=
"SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]"
DeleteCommand="DELETE FROM Products WHERE ProductID = @ProductID">
<DeleteParameters>
<asp:Parameter Name="ProductID" />
</DeleteParameters>
</asp:SqlDataSource>
DeleteCommand özelliğinin eklenmesine dikkat edin, ayrıca <DeleteParameters> bölümü ve productID adlı Parametre nesnesine de dikkat edin.
GridView'ı Silme için Yapılandırma
DeleteCommand Özelliği eklendikten sonra GridView akıllı etiketi artık Silmeyi Etkinleştir seçeneğini içerir. Devam edin ve bu onay kutusunu işaretleyin.
Ekleme, Güncelleştirme ve Silmeye Genel Bakış bölümünde açıklandığı gibi bu, GridView'un ShowDeleteButton özelliği true olarak ayarlanmış bir CommandField eklemesine neden olur. Şekil 4'te gösterildiği gibi, sayfa bir tarayıcı üzerinden ziyaret edildiğinde bir Sil düğmesi eklenir. Bazı ürünleri silerek bu sayfayı test edin.
Şekil 4: Her GridView Satırı Artık Bir Sil Düğmesi Içeriyor (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Sil düğmesine tıklandığında geri gönderme oluşur; GridView, Sil düğmesine basılan satır için `ProductID` parametresine `DataKeys` koleksiyonundaki değeri atar ve SqlDataSource'un `Delete()` yöntemini çağırır. Ardından SqlDataSource denetimi veritabanına bağlanır ve deyimini DELETE yürütür. GridView daha sonra SqlDataSource'a yeniden bağlanarak geri döner ve geçerli ürün kümesini (artık yeni silinen kaydı içermeyen) görüntüler.
Uyarı
GridView, SqlDataSource parametrelerini doldurmak için koleksiyonunu kullandığından DataKeys , GridView s DataKeyNames özelliğinin birincil anahtarı oluşturan sütunlara ayarlanması ve SqlDataSource s'nin SelectCommand bu sütunları döndürmesi çok önemlidir. Ayrıca, SqlDataSource s DeleteCommand içindeki parametre adının olarak @ProductIDayarlanması önemlidir.
DataKeyNames özelliği ayarlanmazsa veya parametrenin adı @ProductsID değilse, Sil düğmesine tıklamak bir postback'e neden olur, ancak aslında hiçbir kaydı silmez.
Şekil 5'de bu etkileşim grafik olarak gösterilmektedir. Veri Web denetimi ekleme, güncelleştirme ve silme ile ilişkili olaylar zinciri hakkında daha ayrıntılı bir tartışma için Ekleme, Güncelleştirme ve Silme ile İlişkili Olayları inceleme öğreticisine geri bakın.
Şekil 5: GridView'da Sil Düğmesine Tıklanması SqlDataSource Delete() Yöntemini Çağırır
2. Adım: INSERT, UPDATE ve DELETE Deyimlerini Otomatik Olarak Oluşturma
1. Adım incelendiğinde, INSERT, UPDATEve DELETE SQL deyimleri Özellikler penceresi veya denetimin bildirim temelli söz dizimi aracılığıyla belirtilebilir. Ancak bu yaklaşım, SQL deyimlerini el ile el ile yazmamızı gerektirir. Bu, monoton ve hataya açık olabilir. Neyse ki, Veri Kaynağını Yapılandır sihirbazı, bir tablo veya görünümden sütunların belirtildiği ekran kullanılırken INSERT, UPDATE ve DELETE ifadelerinin otomatik olarak oluşturulmasını sağlayan bir seçenek sunar.
Şimdi bu otomatik oluşturma seçeneğini inceleyelim.
InsertUpdateDelete.aspx Tasarımcıya bir DetailsView ekleyin ve ID özelliğini ManageProducts olarak ayarlayın. Ardından DetailsView akıllı etiketinden yeni bir veri kaynağı oluşturmayı ve adlı ManageProductsDataSourcebir SqlDataSource oluşturmayı seçin.
Şekil 6: Adlı ManageProductsDataSource Yeni Bir SqlDataSource Oluşturma (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Veri Kaynağını Yapılandır sihirbazında bağlantı dizesini NORTHWINDConnectionString kullanmayı tercih edin ve İleri'ye tıklayın. Select Deyimini Yapılandır ekranında, Tablodaki sütunları belirtin veya radyoyu görüntüle düğmesini seçili bırakın ve açılan listeden Products tabloyu seçin.
ProductIDOnay kutusu listesinden , ProductName, UnitPriceve Discontinued sütunlarını seçin.
Şekil 7: Tabloyu KullanarakProducts, , ProductID, ProductNameve UnitPrice Sütunlarını Döndür Discontinued(Tam boyutlu görüntüyü görüntülemek için tıklayın)
Seçili tablo ve sütunlara göre INSERT, UPDATE ve DELETE deyimlerini otomatik olarak oluşturmak için Gelişmiş düğmesine tıklayın ve INSERT, UPDATE ve DELETE deyimlerini oluştur onay kutusunu işaretleyin.
Şekil 8: INSERT deyimlerini oluştur, UPDATE ve DELETE ifadelerini seçin, ardından Onay Kutusunu işaretleyin
, INSERTve UPDATE deyimleri oluştur DELETEonay kutusu yalnızca seçilen tablonun birincil anahtarı varsa ve birincil anahtar sütunu (veya sütunları) döndürülen sütunlar listesine eklendiğinde denetlenebilir. Oluştur INSERT, UPDATE ve DELETE deyimleri onay kutusu işaretlendikten sonra seçilebilir duruma gelen İyimser eşzamanlılık kullan onay kutusu, ortaya çıkan WHERE ve UPDATE deyimlerinde DELETE yan tümceleri genişleterek iyimser eşzamanlılık denetimi sağlar. Şimdilik bu onay kutusunu işaretsiz bırakın; Sonraki öğreticide SqlDataSource denetimiyle iyimser eşzamanlılığı inceleyeceğiz.
Oluştur INSERT, UPDATEve DELETE deyimleri onay kutusunu işaretledikten sonra, Select Deyimini Yapılandır ekranına dönmek için Tamam'a tıklayın, sonra İleri'ye tıklayın ve ardından Veri Kaynağını Yapılandırma sihirbazını tamamlamak için Son'a tıklayın. Sihirbazı tamamladıktan sonra Visual Studio, ProductID, ProductName ve UnitPrice sütunları için DetailsView'a BoundFields, ve Discontinued sütunu için bir CheckBoxField ekler. DetailsView akıllı etiketinde Sayfalandırmayı Etkinleştir seçeneğini işaretleyerek bu sayfayı ziyaret eden kullanıcının ürünlerde adım adım ilerleyebilmesini sağlayın. DetailsView s Width ve Height özelliklerini de temizleyin.
Akıllı etikette Eklemeyi Etkinleştir, Düzenlemeyi Etkinleştir ve Silmeyi Etkinleştir seçeneklerinin kullanılabilir olduğuna dikkat edin. Bunun nedeni, aşağıdaki bildirim temelli söz diziminde gösterildiği gibi SqlDataSource'un InsertCommand, UpdateCommand ve DeleteCommand değerlerini içermesidir.
<asp:DetailsView ID="ManageProducts" runat="server" AllowPaging="True"
AutoGenerateRows="False" DataKeyNames="ProductID"
DataSourceID="ManageProductsDataSource" EnableViewState="False">
<Fields>
<asp:BoundField DataField="ProductID" HeaderText="ProductID"
InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice"
SortExpression="UnitPrice" />
<asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued"
SortExpression="Discontinued" />
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="ManageProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
DeleteCommand=
"DELETE FROM [Products] WHERE [ProductID] = @ProductID"
InsertCommand=
"INSERT INTO [Products] ([ProductName], [UnitPrice], [Discontinued])
VALUES (@ProductName, @UnitPrice, @Discontinued)"
SelectCommand=
"SELECT [ProductID], [ProductName], [UnitPrice], [Discontinued]
FROM [Products]"
UpdateCommand=
"UPDATE [Products] SET [ProductName] = @ProductName,
[UnitPrice] = @UnitPrice, [Discontinued] = @Discontinued
WHERE [ProductID] = @ProductID">
<DeleteParameters>
<asp:Parameter Name="ProductID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="ProductName" Type="String" />
<asp:Parameter Name="UnitPrice" Type="Decimal" />
<asp:Parameter Name="Discontinued" Type="Boolean" />
<asp:Parameter Name="ProductID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="ProductName" Type="String" />
<asp:Parameter Name="UnitPrice" Type="Decimal" />
<asp:Parameter Name="Discontinued" Type="Boolean" />
</InsertParameters>
</asp:SqlDataSource>
SqlDataSource denetiminin InsertCommand, UpdateCommand ve DeleteCommand özellikleri için değerlerin otomatik olarak ayarlandığına dikkat edin.
InsertCommand ve UpdateCommand özelliklerinde başvurulan sütun kümesi, SELECT deyimindeki sütunlara dayanmaktadır. Diğer bir ifadeyle, ve içinde InsertCommandUpdateCommand Products sütununa sahip olmak yerine yalnızca içinde belirtilen SelectCommand sütunlar vardır (değeri düzenlendiğinde değiştirilemeyen ve eklerken otomatik olarak atanan bir ProductID olduğu için atlanan daha az IDENTITYsütun). Ayrıca, InsertCommand, UpdateCommand ve DeleteCommand özelliklerindeki her parametre için InsertParameters, UpdateParameters ve DeleteParameters koleksiyonlarında karşılık gelen parametreler bulunmaktadır.
DetailsView veri değişikliği özelliklerini açmak için, akıllı etiketinde Eklemeyi Etkinleştir, Düzenlemeyi Etkinleştir ve Silmeyi Etkinleştir seçeneklerini işaretleyin. Bu, ShowInsertButton ile ShowEditButton, ShowDeleteButton ve true özellikleri olarak ayarlanmış bir CommandField ekler.
Tarayıcıda sayfayı ziyaret edin ve DetailsView'da bulunan Düzenle, Sil ve Yeni düğmelerini not edin. Düzenle düğmesine tıklandığında, DetailsView düzenleme moduna geçer; bu modda özelliği (varsayılan olarak) ReadOnly ayarlanmış her BoundField, false bir metin kutusu olarak ve CheckBoxField bir onay kutusu olarak görüntülenir.
Şekil 9: DetailsView'ın Varsayılan Düzenleme Arabirimi (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Benzer şekilde, seçili olan ürünü silebilir veya sisteme yeni bir ürün ekleyebilirsiniz.
InsertCommand ifadesi yalnızca ProductName, UnitPrice ve Discontinued sütunları ile çalıştığı için, diğer sütunlara ekleme sırasında veritabanı tarafından ya NULL ya da varsayılan değer atanır. ObjectDataSource'ta olduğu gibi, InsertCommand eksikse ve bu sütunlar NULL'lere izin vermiyorsa ya da varsayılan bir değeri yoksa, INSERT deyimi yürütülmeye çalışıldığında bir SQL hatası oluşur.
Uyarı
DetailsView ekleme ve düzenleme arabirimlerinde herhangi bir özelleştirme veya doğrulama yok. Doğrulama denetimleri eklemek veya arabirimleri özelleştirmek için BoundField'leri TemplateFields'e dönüştürmeniz gerekir. Daha fazla bilgi için Düzenleme ve Ekleme Arabirimlerine Doğrulama Denetimleri Ekleme ve Veri Değiştirme Arabirimini Özelleştirme öğreticilerine bakın.
Ayrıca, DetailsView'un DataKey güncelleştirme ve silme için geçerli ürün değerini kullandığını ve bu değerin DataKeyNames yalnızca özelliği yapılandırıldığında mevcut olduğunu unutmayın. Düzenleme veya silme işleminin hiçbir etkisi yok gibi görünüyorsa özelliğin ayarlandığından DataKeyNames emin olun.
Sql Deyimlerini Otomatik Olarak Oluşturma sınırlamaları
Oluştur INSERT, UPDATEve DELETE deyimleri seçeneği yalnızca bir tablodan sütun seçerken kullanılabildiğinden, daha karmaşık sorgular için 1. Adımda yaptığımız gibi kendi INSERT, UPDATEve DELETE deyimlerinizi yazmanız gerekir. SQL SELECT deyimleri genellikle verileri görüntülemek için bir veya daha fazla arama tablosundan geri çekmek amacıyla kullanılır (örneğin, ürün bilgilerini görüntülerken JOIN tablosunun Categories alanını geri çekmek gibi). Aynı zamanda kullanıcının verileri düzenlemesine, güncelleştirmesine veya çekirdek tabloya eklemesine (Productsbu örnekte) izin vermek isteyebiliriz.
INSERT, UPDATEve DELETE deyimleri el ile girilebilir ancak aşağıdaki zaman kazandıran ipucunu göz önünde bulundurun. Başlangıçta SqlDataSource'u yalnızca tablodan Products verileri geri çekecek şekilde ayarlayın. Veri Kaynağını Yapılandırma sihirbazının Tablo veya görünüm ekranından sütunları belirtmek için kullanarak, INSERT, UPDATE ve DELETE deyimlerini otomatik olarak oluşturabilirsiniz. Ardından, sihirbazı tamamladıktan sonra Özellikler penceresinden SelectQuery'yi yapılandırmayı seçin (veya alternatif olarak Veri Kaynağını Yapılandırma sihirbazına geri dönün, ancak Özel SQL deyimi veya saklı yordam belirtin seçeneğini kullanın). Ardından SELECT ifadesini, JOIN söz dizimini içerecek şekilde güncelleştirin. Bu teknik, otomatik olarak oluşturulan SQL deyimlerinin zaman kazandıran avantajlarını sunar ve daha özelleştirilmiş SELECT bir deyim sağlar.
Otomatik olarak INSERT, UPDATE ve DELETE ifadelerini oluşturmanın bir diğer sınırlaması, INSERT ve UPDATE ifadelerindeki sütunların, SELECT ifadesi tarafından döndürülen sütunlara dayanmasıdır. Ancak, daha fazla veya daha az alanı güncelleştirmemiz veya eklememiz gerekebilir. Örneğin, 2. Adım'daki örnekte BoundField'in salt okunur olmasını isteyebiliriz UnitPrice . Bu durumda, UpdateCommand içinde görünmemelidir. Veya GridView'da görünmeyen bir tablo alanının değerini ayarlamak isteyebiliriz. Örneğin, yeni bir kayıt eklerken değerin QuantityPerUnit TODO olarak ayarlanmasını isteyebiliriz.
Bu tür özelleştirmeler gerekiyorsa, bunları manuel olarak, ya Özellikler penceresi aracılığıyla, Sihirbazdaki özel SQL deyimi veya saklı yordam seçeneği aracılığıyla, ya da bildirimsel söz dizimi aracılığıyla yapmanız gerekir.
Uyarı
Veri Web denetiminde karşılık gelen alanları olmayan parametreler eklerken, bu parametre değerlerinin bir şekilde değer atanması gerektiğini unutmayın. Bu değerler şunlar olabilir: InsertCommand içinde veya UpdateCommand doğrudan sabit kodlanmış; önceden tanımlanmış bir kaynaktan (sorgu dizesi, oturum durumu, sayfadaki Web denetimleri vb.) gelebilir veya önceki öğreticide gördüğümüz gibi program aracılığıyla atanabilir.
Özet
Veri Web denetimlerinin yerleşik ekleme, düzenleme ve silme özelliklerini kullanabilmesi için, bağlı oldukları veri kaynağı denetiminin bu tür işlevler sunması gerekir. SqlDataSource için bu, INSERT, UPDATE ve DELETE SQL deyimlerinin InsertCommand, UpdateCommand ve DeleteCommand özelliklerine atanması gerektiği anlamına gelir. Bu özellikler ve buna karşılık gelen parametre koleksiyonları, Veri Kaynağını Yapılandırma sihirbazı aracılığıyla el ile eklenebilir veya otomatik olarak oluşturulabilir. Bu öğreticide her iki tekniği de inceledik.
İyimser Eşzamanlılık Uygulama öğreticisinde ObjectDataSource ile iyimser eşzamanlılık kullanmayı inceledik. SqlDataSource denetimi de iyimser eşzamanlılık desteği sağlar. Adım 2'de belirtildiği gibi, INSERT, UPDATE ve DELETE deyimlerini otomatik olarak oluştururken, sihirbaz 'İyimser eşzamanlılık kullan' seçeneğini sunar. "Sonraki öğreticide göreceğimiz üzere, SqlDataSource ile iyimser eşzamanlılık kullanıldığında, WHERE ve UPDATE ifadelerindeki DELETE yan tümceleri değiştirerek diğer sütunların değerlerinin, verilerin sayfada en son görüntülendiği andan itibaren değişmediğinden emin olunur."
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ışır. Son kitabı Sams Teach Yourself ASP.NET 24 Hours 2.0'dır. Ona adresinden mitchell@4GuysFromRolla.comulaşabilirsiniz.