Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Scott Mitchell
Dalam tutorial sebelumnya kita mempelajari bagaimana kontrol ObjectDataSource diizinkan untuk menyisipkan, memperbarui, dan menghapus data. Kontrol SqlDataSource mendukung operasi yang sama, tetapi pendekatannya berbeda, dan tutorial ini menunjukkan cara mengonfigurasi SqlDataSource untuk menyisipkan, memperbarui, dan menghapus data.
Pendahuluan
Seperti yang dibahas dalam Gambaran Umum Menyisipkan, Memperbarui, dan Menghapus, kontrol GridView menyediakan kemampuan pembaruan dan penghapusan bawaan, sementara kontrol DetailsView dan FormView mencakup menyisipkan dukungan bersama dengan mengedit dan menghapus fungsionalitas. Kemampuan modifikasi data ini dapat dicolokkan langsung ke kontrol sumber data tanpa baris kode yang perlu ditulis. Gambaran Umum Menyisipkan, Memperbarui, dan Menghapus dengan menggunakan ObjectDataSource untuk memfasilitasi penyisipan, pembaruan, dan penghapusan dengan kontrol GridView, DetailsView, dan FormView. Atau, SqlDataSource dapat digunakan sebagai pengganti ObjectDataSource.
Ingat bahwa untuk mendukung penyisipan, pembaruan, dan penghapusan, dengan ObjectDataSource, kami perlu menentukan metode lapisan objek yang akan dipanggil untuk melakukan tindakan sisipkan, perbarui, atau hapus. Dengan SqlDataSource, kita perlu memberikan pernyataan SQL INSERT, UPDATE, dan DELETE (atau prosedur tersimpan) untuk dijalankan. Seperti yang akan kita lihat dalam tutorial ini, pernyataan ini dapat dibuat secara manual atau dapat dibuat secara otomatis oleh wizard Konfigurasi Sumber Data SqlDataSource.
Nota
Karena kita telah membahas kemampuan menyisipkan, mengedit, dan menghapus kontrol GridView, DetailsView, dan FormView, tutorial ini akan berfokus pada konfigurasi kontrol SqlDataSource untuk mendukung operasi ini. Jika Anda perlu menyikat penerapan fitur-fitur ini dalam tutorial GridView, DetailsView, dan FormView, kembali ke tutorial Mengedit, Menyisipkan, dan Menghapus Data, dimulai dengan Gambaran Umum Menyisipkan, Memperbarui, dan Menghapus.
Langkah 1: Menentukan Pernyataan INSERT, UPDATE, dan DELETE
Seperti yang telah kita lihat dalam dua tutorial sebelumnya, untuk mengambil data dari kontrol SqlDataSource kita perlu mengatur dua properti:
-
ConnectionString, yang menentukan database apa yang akan dikirimi kueri, dan -
SelectCommand, yang menentukan pernyataan SQL ad-hoc atau nama prosedur tersimpan untuk dijalankan untuk mengembalikan hasilnya.
Untuk SelectCommand nilai dengan parameter, nilai parameter ditentukan melalui koleksi SqlDataSource SelectParameters dan dapat menyertakan nilai yang dikodekan keras, nilai sumber parameter umum (bidang querystring, variabel sesi, nilai kontrol Web, dan sebagainya), atau dapat ditetapkan secara terprogram. Ketika metode kontrol Select() SqlDataSource dipanggil, baik secara program atau otomatis dari data Web, hingga koneksi ke database dibuat, nilai parameter ditetapkan ke kueri, dan perintah dikirim ke database. Hasilnya kemudian dikembalikan sebagai Himpunan Data atau DataReader, tergantung pada nilai properti kontrol DataSourceMode .
Selain memilih data, kontrol SqlDataSource dapat digunakan untuk menyisipkan, memperbarui, dan menghapus data dengan menyediakan pernyataan SQL INSERT, UPDATE, dan DELETE dengan cara yang serupa. Cukup tetapkan properti InsertCommand, UpdateCommand, dan DeleteCommand dengan pernyataan SQL INSERT, UPDATE, dan DELETE untuk dijalankan. Jika pernyataan memiliki parameter (sebagian besar akan), sertakan mereka dalam koleksi InsertParameters, UpdateParameters, dan DeleteParameters.
InsertCommandSetelah nilai , UpdateCommand, atau DeleteCommand ditentukan, opsi Aktifkan Penyisipan, Aktifkan Pengeditan, atau Aktifkan Penghapusan di tag pintar kontrol Web data terkait akan tersedia. Untuk mengilustrasikan hal ini, mari kita ambil contoh dari halaman Querying.aspx yang kita buat dalam tutorial Querying Data dengan Kontrol SqlDataSource dan menambahkannya untuk menyertakan kemampuan penghapusan.
Mulailah dengan membuka halaman InsertUpdateDelete.aspx dan Querying.aspx dari folder SqlDataSource. Dari Perancang pada halaman Querying.aspx, pilih SqlDataSource dan GridView dari contoh pertama (pengontrol ProductsDataSource dan GridView1). Setelah memilih dua kontrol, buka menu Edit dan pilih Salin (atau cukup tekan Ctrl+C). Selanjutnya, buka Desainer InsertUpdateDelete.aspx dan tempelkan kontrolnya. Setelah Anda memindahkan dua kontrol ke InsertUpdateDelete.aspx, uji halaman di browser. Anda seharusnya melihat nilai kolom ProductID, ProductName, dan UnitPrice untuk semua rekaman dalam tabel basis data Products.
Gambar 1: Semua Produk Tercantum, Diurutkan menurut ProductID (Klik untuk melihat gambar ukuran penuh)
Menambahkan properti DeleteCommand dan DeleteParameters dari SqlDataSource
Pada titik ini kita memiliki SqlDataSource yang hanya mengembalikan semua rekaman dari Products tabel dan GridView yang merender data ini. Tujuan kami adalah memperluas contoh ini untuk memungkinkan pengguna menghapus produk melalui GridView. Untuk mencapai hal ini, kita perlu menentukan nilai untuk kontrol DeleteCommand dan DeleteParameters properti SqlDataSource lalu mengonfigurasi GridView untuk mendukung penghapusan.
Properti DeleteCommand dan DeleteParameters dapat ditentukan dalam sejumlah cara:
- Melalui sintaks deklaratif
- Dari jendela Properti di Perancang
- Dari layar Tentukan pernyataan SQL kustom atau prosedur tersimpan di wizard Konfigurasi Sumber Data
- Melalui tombol Tingkat Lanjut di layar Tentukan Kolom dari Tabel Tampilan di wizard Konfigurasi Sumber Data, yang sebenarnya akan secara otomatis menghasilkan
DELETEperintah SQL dan kumpulan parameter yang digunakan dalam propertiDeleteCommanddanDeleteParameters
Kami akan memeriksa cara membuat pernyataan secara otomatis DELETE di Langkah 2. Untuk saat ini, mari kita gunakan jendela Properti di Perancang, meskipun panduan Konfigurasi Sumber Data atau opsi sintaks deklaratif juga akan berfungsi.
Dari Perancang di InsertUpdateDelete.aspx, klik ProductsDataSource SqlDataSource lalu munculkan jendela Properti (dari menu Tampilan, pilih jendela Properti, atau cukup tekan F4). Pilih properti DeleteQuery, yang akan memunculkan sekumpulan elipsis.
Gambar 2: Pilih Properti DeleteQuery dari Jendela Properti
Nota
SqlDataSource tidak memiliki properti DeleteQuery. Sebaliknya, DeleteQuery adalah kombinasi properti DeleteCommand dan DeleteParameters dan hanya tercantum di jendela Properti saat melihat jendela melalui Perancang. Jika Anda melihat jendela Properti di tampilan Sumber, Anda akan menemukan properti sebagai gantinya DeleteCommand .
Klik elipsis di properti DeleteQuery untuk memunculkan kotak dialog Editor Perintah dan Parameter (lihat Gambar 3). Dari kotak dialog ini, Anda dapat menentukan DELETE pernyataan SQL dan menentukan parameter. Masukkan kueri berikut ke DELETE dalam kotak teks perintah (baik secara manual atau menggunakan Penyusun Kueri, jika Anda mau):
DELETE FROM Products
WHERE ProductID = @ProductID
Selanjutnya, klik tombol Refresh Parameter untuk menambahkan @ProductID parameter ke daftar parameter di bawah ini.
@ProductID ditambahkan ke daftar parameter perintah DELETE." />
Gambar 3: Pilih Properti DeleteQuery dari Jendela Properti (Klik untuk melihat gambar ukuran penuh)
Jangan berikan nilai untuk parameter ini (biarkan sumber Parameternya di Tidak Ada ). Setelah kami menambahkan dukungan penghapusan ke GridView, GridView akan secara otomatis menyediakan nilai parameter ini, menggunakan nilai koleksinya DataKeys untuk baris yang tombol Hapusnya diklik.
Nota
Nama parameter yang DELETE digunakan dalam kueri harus sama dengan nama DataKeyNames nilai di GridView, DetailsView, atau FormView. Artinya, parameter dalam DELETE pernyataan dinamai @ProductID dengan sengaja (bukan, katakanlah, @ID), karena nama kolom kunci utama dalam tabel Produk (dan oleh karena itu nilai DataKeyNames di GridView) adalah ProductID.
Jika nama dan DataKeyNames nilai parameter tidak cocok, GridView tidak dapat secara otomatis menetapkan parameter nilai dari DataKeys koleksi.
Setelah memasukkan informasi terkait penghapusan ke dalam kotak dialog Editor Perintah dan Parameter klik OK dan buka tampilan Sumber untuk memeriksa markup deklaratif yang dihasilkan:
<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>
Perhatikan penambahan DeleteCommand properti serta <DeleteParameters> bagian dan objek Parameter bernama productID.
Mengonfigurasi GridView untuk Menghapus
Dengan properti DeleteCommand ditambahkan, tag pintar GridView sekarang berisi opsi untuk Mengaktifkan Penghapusan. Lanjutkan dan centang kotak ini. Seperti yang dibahas dalam Gambaran Umum Menyisipkan, Memperbarui, dan Menghapus, ini menyebabkan GridView menambahkan CommandField dengan propertinya ShowDeleteButton diatur ke true. Seperti yang ditunjukkan Gambar 4, saat halaman dikunjungi melalui browser, tombol Hapus disertakan. Uji halaman ini dengan menghapus beberapa produk.
Gambar 4: Setiap Baris GridView Sekarang Menyertakan Tombol Hapus (Klik untuk melihat gambar ukuran penuh)
Setelah mengklik tombol Hapus, terjadi postback, GridView menetapkan parameter ProductID dengan nilai dari koleksi DataKeys untuk baris yang tombol Hapusnya diklik, dan memanggil metode Delete() dari SqlDataSource. Kontrol SqlDataSource kemudian tersambung ke database dan menjalankan DELETE pernyataan. GridView kemudian mengikat ulang ke SqlDataSource, lalu mendapatkan kembali dan menampilkan kumpulan produk saat ini (yang tidak lagi menyertakan catatan yang baru saja dihapus).
Nota
Karena GridView menggunakan koleksinya DataKeys untuk mengisi parameter SqlDataSource, sangat penting bahwa properti GridView diatur DataKeyNames ke kolom yang menjadi kunci utama dan bahwa SqlDataSource mengembalikan SelectCommand kolom-kolom tersebut. Selain itu, penting bahwa nama parameter dalam SqlDataSource s DeleteCommand diatur ke @ProductID.
DataKeyNames Jika properti tidak diatur atau parameter tidak bernama @ProductsID, mengklik tombol Hapus akan menyebabkan postback, tetapi tidak akan benar-benar menghapus rekaman apa pun.
Gambar 5 menggambarkan interaksi ini secara grafis. Lihat kembali tutorial Memeriksa Peristiwa yang Terkait dengan Menyisipkan, Memperbarui, dan Menghapus untuk diskusi yang lebih rinci tentang rantai peristiwa yang terkait dengan menyisipkan, memperbarui, dan menghapus dari kontrol Web data.
Gambar 5: Mengklik Tombol Hapus di GridView Memanggil Metode SqlDataSource s Delete()
Langkah 2: Secara Otomatis Menghasilkan Pernyataan INSERT, UPDATE, dan DELETE
Seperti langkah 1 yang diperiksa, INSERT, , UPDATEdan DELETE pernyataan SQL dapat ditentukan melalui jendela Properti atau sintaksis deklaratif kontrol. Namun, pendekatan ini mengharuskan kami menulis pernyataan SQL secara manual dengan tangan, yang dapat monoton dan rawan kesalahan. Untungnya, wizard Konfigurasi Sumber Data menyediakan opsi untuk membuat pernyataan INSERT, UPDATE, dan DELETE secara otomatis saat menggunakan layar Tentukan kolom dari tabel atau tampilan.
Mari jelajahi opsi pembuatan otomatis ini. Tambahkan DetailsView ke Perancang di InsertUpdateDelete.aspx dan atur propertinya ID ke ManageProducts. Selanjutnya, dari tag pintar DetailsView, pilih untuk membuat sumber data baru dan membuat SqlDataSource bernama ManageProductsDataSource.
Gambar 6: Buat SqlDataSource Baru Bernama ManageProductsDataSource (Klik untuk melihat gambar ukuran penuh)
Dari wizard Konfigurasi Sumber Data, pilih opsi untuk menggunakan NORTHWINDConnectionString string koneksi dan klik Berikutnya. Dari layar Konfigurasi Pilih Pernyataan, biarkan tombol Tentukan kolom dari tabel atau lihat radio dipilih dan pilih Products tabel dari daftar drop-down.
ProductIDPilih kolom , ProductName, UnitPrice, dan Discontinued dari daftar kotak centang.
Gambar 7: Menggunakan Products Tabel, Kembalikan ProductID, ProductName, UnitPrice, dan Discontinued Kolom (Klik untuk melihat gambar ukuran penuh)
Untuk membuat INSERTpernyataan , UPDATE, dan DELETE secara otomatis berdasarkan tabel dan kolom yang dipilih, klik tombol Tingkat Lanjut dan centang kotak buat INSERT, UPDATE, dan DELETE pernyataan.
Gambar 8: Centang kotak Buat INSERT, UPDATE, dan DELETE pernyataan
Kotak centang Buat INSERT, UPDATE, dan DELETE pernyataan hanya akan dapat dicentang jika tabel yang dipilih memiliki kunci utama dan kolom kunci utama (atau kolom) disertakan dalam daftar kolom yang dikembalikan. Kotak centang Gunakan konkurensi optimis, yang dapat dipilih setelah kotak centang Buat INSERT, UPDATE, dan DELETE pernyataan dicentang, akan menambahkan klausa WHERE dalam pernyataan UPDATE dan DELETE yang dihasilkan untuk memberikan kontrol konkurensi optimis. Untuk saat ini, biarkan kotak centang ini tidak dicentang; kita akan memeriksa konkurensi optimis dengan kontrol SqlDataSource di tutorial selanjutnya.
Setelah mencentang kotak Buat INSERT, UPDATE, dan DELETE pernyataan, klik OK untuk kembali ke layar Konfigurasi Pilih Pernyataan, lalu klik Berikutnya, lalu Selesai, untuk menyelesaikan wizard Konfigurasi Sumber Data. Setelah menyelesaikan wizard, Visual Studio akan menambahkan BoundFields ke DetailsView untuk kolom ProductID, ProductName, dan UnitPrice serta CheckBoxField untuk kolom Discontinued. Dari label pintar DetailsView, centang opsi Mengaktifkan Penomoran Halaman sehingga pengguna yang mengunjungi halaman ini dapat menelusuri produk. Hapus juga DetailsView s Width dan Height properti.
Perhatikan bahwa tag pintar memiliki opsi Aktifkan Penyisipan, Aktifkan Pengeditan, dan Aktifkan Penghapusan yang tersedia. Ini karena SqlDataSource berisi nilai untuk InsertCommand, , UpdateCommanddan DeleteCommand, seperti yang ditunjukkan oleh sintaks deklaratif berikut:
<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>
Perhatikan bagaimana kontrol SqlDataSource memiliki nilai yang diatur secara otomatis untuk properti InsertCommand, UpdateCommand, dan DeleteCommand. Kumpulan kolom yang dirujuk dalam properti InsertCommand dan UpdateCommand didasarkan pada pernyataan SELECT. Artinya, daripada memiliki kolom Produk setiap di InsertCommand dan UpdateCommand, hanya ada kolom yang ditentukan dalam SelectCommand (kecuali ProductID, yang dihilangkan karena merupakan kolom IDENTITY, yang nilainya tidak dapat diubah saat diedit dan ditetapkan secara otomatis saat menyisipkan). Selain itu, untuk setiap parameter dalam InsertCommand, UpdateCommand, dan DeleteCommand properti, ada parameter yang sesuai dalam koleksi InsertParameters, UpdateParameters, dan DeleteParameters.
Untuk mengaktifkan fitur modifikasi data DetailsView, centang opsi Aktifkan Penyisipan, Aktifkan Pengeditan, dan Aktifkan Penghapusan dalam tag pintarnya. Ini menambahkan CommandField dengan properti ShowInsertButton, ShowEditButton, dan ShowDeleteButton diatur ke true.
Kunjungi halaman di browser dan perhatikan tombol Edit, Hapus, dan Baru yang disertakan dalam DetailsView. Mengklik tombol Edit mengubah DetailsView menjadi mode edit, yang menampilkan setiap BoundField yang propertinya ReadOnly diatur ke false (default) sebagai TextBox, dan CheckBoxField sebagai kotak centang.
Gambar 9: TampilanDetail Tampilan Bawaan Antarmuka Pengeditan (Klik untuk melihat gambar ukuran penuh)
Demikian pula, Anda dapat menghapus produk yang saat ini dipilih atau menambahkan produk baru ke sistem. Karena pernyataan InsertCommand hanya berfungsi dengan kolom ProductName, UnitPrice, dan Discontinued, kolom lainnya memiliki NULL atau nilai default yang ditetapkan oleh database saat dimasukkan. Sama seperti ObjectDataSource, jika InsertCommand tidak ada kolom tabel database yang tidak mengizinkan NULL s dan tidak memiliki nilai default, kesalahan SQL akan terjadi saat mencoba menjalankan INSERT pernyataan.
Nota
Antarmuka penyisipan dan pengeditan DetailsView tidak memiliki kustomisasi atau validasi apa pun. Untuk menambahkan kontrol validasi atau untuk menyesuaikan antarmuka, Anda perlu mengonversi BoundFields ke TemplateFields. Lihat tutorial Menambahkan Kontrol Validasi ke Antarmuka Pengeditan dan Penyisipan dan Menyesuaikan Antarmuka Modifikasi Data untuk informasi selengkapnya.
Selain itu, perlu diingat bahwa untuk memperbarui dan menghapus, DetailsView menggunakan nilai produk DataKey saat ini, yang hanya ada jika properti dikonfigurasi DataKeyNames . Jika pengeditan atau penghapusan tampaknya tidak berpengaruh, pastikan bahwa DataKeyNames properti diatur.
Batasan Membuat Pernyataan SQL Secara Otomatis
Karena opsi Buat INSERT, UPDATE, dan DELETE pernyataan hanya tersedia saat memilih kolom dari tabel, untuk kueri yang lebih kompleks, Anda harus menulis pernyataan Anda sendiri INSERT, UPDATE, dan DELETE seperti yang kami lakukan di Langkah 1. Umumnya, pernyataan SQL SELECT menggunakan JOIN s untuk mengembalikan data dari satu atau beberapa tabel pencarian untuk tujuan tampilan (seperti mengembalikan Categories bidang tabel s CategoryName saat menampilkan informasi produk). Pada saat yang sama, kami mungkin ingin mengizinkan pengguna mengedit, memperbarui, atau menyisipkan data ke dalam tabel inti (Products, dalam hal ini).
Meskipun pernyataan INSERT, UPDATE, dan DELETE dapat dimasukkan secara manual, pertimbangkan tip berikut untuk menghemat waktu. Awalnya siapkan SqlDataSource sehingga menarik kembali data hanya dari Products tabel. Gunakan wizard Konfigurasi Sumber Data untuk menentukan kolom dari tabel atau tampilan sehingga Anda bisa membuat pernyataan INSERT, UPDATE, dan DELETE secara otomatis. Kemudian, setelah menyelesaikan wizard, pilih untuk mengonfigurasi SelectQuery dari jendela Properti (atau, sebagai alternatif, kembali ke wizard Konfigurasi Sumber Data, tetapi gunakan opsi Tentukan pernyataan SQL kustom atau prosedur tersimpan). Kemudian perbarui SELECT pernyataan untuk menyertakan JOIN sintaks. Teknik ini menawarkan manfaat penghematan waktu dari pernyataan SQL yang dihasilkan secara otomatis dan memungkinkan pernyataan yang lebih disesuaikan SELECT .
Batasan lain dari pembuatan pernyataan INSERT, UPDATE, dan DELETE secara otomatis adalah bahwa kolom dalam pernyataan INSERT dan UPDATE didasarkan pada kolom yang dikembalikan oleh pernyataan SELECT. Namun, kita mungkin perlu memperbarui atau menyisipkan lebih banyak atau lebih sedikit bidang. Misalnya, dalam contoh dari Langkah 2, mungkin kita ingin BoundField UnitPrice bersifat hanya-baca. Dalam hal ini, seharusnya tidak muncul di UpdateCommand. Atau kita mungkin ingin mengatur nilai bidang tabel yang tidak muncul di GridView. Misalnya, kita mungkin ingin nilai QuantityPerUnit diatur ke TODO saat menambahkan catatan baru.
Jika kustomisasi tersebut diperlukan, Anda perlu membuatnya secara manual, baik melalui jendela Properti, opsi Tentukan pernyataan SQL kustom atau prosedur tersimpan dalam wizard, atau melalui sintaks deklaratif.
Nota
Saat menambahkan parameter yang tidak memiliki bidang yang sesuai dalam kontrol Web data, perlu diingat bahwa nilai parameter ini perlu ditetapkan nilai dengan cara tertentu. Nilai-nilai ini dapat berupa: dikodekan secara langsung di InsertCommand atau UpdateCommand; dapat berasal dari beberapa sumber yang telah ditentukan sebelumnya (querystring, status sesi, kontrol Web di halaman, dan sebagainya); atau dapat ditetapkan secara terprogram, seperti yang kita lihat dalam tutorial sebelumnya.
Ringkasan
Agar kontrol Web data dapat menggunakan kemampuan penyisipan, pengeditan, dan penghapusan bawaan, kontrol sumber data yang terikat untuk mereka harus menawarkan fungsionalitas tersebut. Untuk SqlDataSource, ini berarti bahwa pernyataan SQL INSERT, UPDATE, dan DELETE harus ditetapkan ke properti InsertCommand, UpdateCommand, dan DeleteCommand. Properti ini, dan koleksi parameter yang sesuai, dapat ditambahkan secara manual atau dihasilkan secara otomatis melalui wizard Konfigurasi Sumber Data. Dalam tutorial ini kami memeriksa kedua teknik.
Kami memeriksa menggunakan konkurensi optimis dengan ObjectDataSource dalam tutorial Menerapkan Konkurensi Optimis . Kontrol SqlDataSource juga memberikan dukungan konkurensi optimis. Seperti yang disebutkan di Langkah 2, saat secara otomatis menghasilkan pernyataan INSERT, UPDATE, dan DELETE, wizard menawarkan opsi gunakan konkurensi optimis. Seperti yang akan kita lihat di tutorial berikutnya, menggunakan konkurensi optimis dengan SqlDataSource memodifikasi klausul WHERE dalam pernyataan UPDATE dan DELETE untuk memastikan bahwa nilai-nilai untuk kolom lain belum berubah sejak data terakhir ditampilkan di halaman.
Selamat Pemrograman!
Tentang Penulis
Scott Mitchell, penulis tujuh buku ASP/ASP.NET dan pendiri 4GuysFromRolla.com, telah bekerja sama dengan teknologi Microsoft Web sejak 1998. Scott bekerja sebagai konsultan, pelatih, dan penulis independen. Buku terbarunya adalah Sams Teach Yourself ASP.NET 2.0 dalam 24 Jam. Dia dapat dijangkau di mitchell@4GuysFromRolla.com.