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
Memeriksa cara memanggil metode, mengatur properti, dll. Halaman Master dari kode di Halaman Konten.
Pendahuluan
Selama lima tutorial terakhir, kita telah melihat cara membuat halaman master, menentukan wilayah konten, mengikat ASP.NET halaman ke halaman master, dan menentukan konten khusus halaman. Ketika pengunjung meminta halaman konten tertentu, konten dan markup halaman master menyatu pada runtime, menghasilkan penyajian hierarki kontrol terpadu. Oleh karena itu, kita telah melihat salah satu cara di mana halaman master dan salah satu halaman kontennya dapat berinteraksi: halaman konten mengeja markup untuk ditransfusikan ke kontrol ContentPlaceHolder halaman master.
Apa yang belum kita periksa adalah bagaimana halaman master dan halaman konten dapat berinteraksi secara terprogram. Selain menentukan markup untuk kontrol ContentPlaceHolder halaman master, halaman konten juga dapat menetapkan nilai ke properti publik halaman masternya dan memanggil metode publiknya. Demikian pula, halaman master dapat berinteraksi dengan halaman kontennya. Meskipun interaksi terprogram antara halaman master dan konten kurang umum daripada interaksi antara markup deklaratif mereka, ada banyak skenario di mana interaksi terprogram tersebut diperlukan.
Dalam tutorial ini kami memeriksa bagaimana halaman konten dapat berinteraksi secara terprogram dengan halaman masternya; dalam tutorial berikutnya kita akan melihat bagaimana halaman master dapat berinteraksi dengan halaman kontennya.
Contoh Interaksi Terprogram Antara Halaman Konten dan Halaman Master-nya
Ketika wilayah tertentu dari halaman perlu dikonfigurasi berdasarkan halaman demi halaman, kami menggunakan kontrol ContentPlaceHolder. Tetapi bagaimana dengan situasi di mana sebagian besar halaman perlu memancarkan output tertentu, tetapi sejumlah kecil halaman perlu menyesuaikannya untuk menunjukkan sesuatu yang lain? Salah satu contoh seperti itu, yang kami periksa dalam tutorial Beberapa ContentPlaceHolders dan Konten Default, melibatkan menampilkan antarmuka login di setiap halaman. Meskipun sebagian besar halaman harus menyertakan antarmuka masuk, halaman tersebut harus ditekan untuk beberapa halaman, seperti: halaman masuk utama (Login.aspx
); halaman Buat Akun; dan halaman lain yang hanya dapat diakses oleh pengguna yang diautentikasi. Tutorial Beberapa ContentPlaceHolders dan Konten Default menunjukkan cara menentukan konten default untuk ContentPlaceHolder di halaman master lalu cara mengambil alihnya di halaman di mana konten default tidak diinginkan.
Opsi lain adalah membuat properti atau metode publik dalam halaman master yang menunjukkan apakah akan menampilkan atau menyembunyikan antarmuka masuk. Misalnya, halaman master mungkin menyertakan properti publik bernama ShowLoginUI
yang nilainya digunakan untuk mengatur Visible
properti kontrol Masuk di halaman master. Halaman konten tempat antarmuka pengguna masuk harus ditekan kemudian dapat secara terprogram mengatur ShowLoginUI
properti ke False
.
Mungkin contoh konten dan interaksi halaman master yang paling umum terjadi ketika data yang ditampilkan di halaman master perlu di-refresh setelah beberapa tindakan ditranspitasikan di halaman konten. Pertimbangkan halaman master yang menyertakan GridView yang menampilkan lima rekaman terbaru yang ditambahkan dari tabel database tertentu, dan salah satu halaman kontennya menyertakan antarmuka untuk menambahkan rekaman baru ke tabel yang sama.
Saat pengguna mengunjungi halaman untuk menambahkan rekaman baru, dia melihat lima rekaman yang terakhir ditambahkan yang ditampilkan di halaman master. Setelah mengisi nilai untuk kolom rekaman baru, dia mengirimkan formulir. Dengan asumsi bahwa GridView di halaman master memiliki properti yang EnableViewState
diatur ke True (default), kontennya dimuat ulang dari status tampilan dan, akibatnya, lima rekaman yang sama ditampilkan meskipun rekaman yang lebih baru baru baru ditambahkan ke database. Ini dapat membingungkan pengguna.
Catatan
Bahkan jika Anda menonaktifkan status tampilan GridView sehingga mengikat kembali ke sumber data yang mendasar pada setiap postback, itu masih tidak akan menampilkan rekaman yang baru ditambahkan karena data terikat ke GridView sebelumnya dalam siklus hidup halaman daripada ketika rekaman baru ditambahkan ke database.
Untuk memperbaiki ini sehingga rekaman yang baru ditambahkan ditampilkan di GridView halaman master tentang postback, kita perlu menginstruksikan GridView untuk mengikat kembali ke sumber datanya setelah rekaman baru ditambahkan ke database. Ini memerlukan interaksi antara konten dan halaman master karena antarmuka untuk menambahkan rekaman baru (dan penanganan aktivitasnya) ada di halaman konten tetapi GridView yang perlu disegarkan ada di halaman master.
Karena me-refresh tampilan halaman master dari penanganan aktivitas di halaman konten adalah salah satu kebutuhan paling umum untuk konten dan interaksi halaman master, mari kita jelajahi topik ini secara lebih rinci. Unduhan untuk tutorial ini mencakup database Microsoft SQL Server 2005 Express Edition yang dinamai NORTHWIND.MDF
App_Data
di folder situs web. Database Northwind menyimpan informasi produk, karyawan, dan penjualan untuk perusahaan fiktif, Northwind Traders.
Langkah 1 menelusuri menampilkan lima produk terbaru yang ditambahkan dalam GridView di halaman master. Langkah 2 membuat halaman konten untuk menambahkan produk baru. Langkah 3 melihat cara membuat properti dan metode publik di halaman master, dan Langkah 4 menggambarkan cara berinteraksi secara terprogram dengan properti dan metode ini dari halaman konten.
Catatan
Tutorial ini tidak mempelajari secara spesifik bekerja dengan data dalam ASP.NET. Langkah-langkah untuk menyiapkan halaman master untuk menampilkan data dan halaman konten untuk menyisipkan data selesai, namun mudah. Untuk tampilan yang lebih mendalam dalam menampilkan dan menyisipkan data dan menggunakan kontrol SqlDataSource dan GridView, lihat sumber daya di bagian Bacaan Lebih Lanjut di akhir tutorial ini.
Langkah 1: Menampilkan Lima Produk yang Terakhir Ditambahkan di Halaman Master
Buka halaman master Site.master dan tambahkan Label dan kontrol GridView ke leftContent
<div>
. Hapus properti LabelText
, atur propertinya EnableViewState
ke , dan propertinya ID
ke GridMessage
False
; atur properti GridView ID
ke RecentProducts
. Selanjutnya, dari Perancang, perluas tag pintar GridView dan pilih untuk mengikatnya ke sumber data baru. Ini meluncurkan wizard Konfigurasi Sumber Data. Karena database Northwind di App_Data
folder adalah database Microsoft SQL Server, pilih untuk membuat SqlDataSource dengan memilih (lihat Gambar 1); beri nama SqlDataSource RecentProductsDataSource
.
Gambar 01: Ikat GridView ke Kontrol SqlDataSource Bernama RecentProductsDataSource
(Klik untuk melihat gambar ukuran penuh)
Langkah selanjutnya meminta kami untuk menentukan database apa yang akan disambungkan. NORTHWIND.MDF
Pilih file database dari daftar drop-down dan klik Berikutnya. Karena ini adalah pertama kalinya kita menggunakan database ini, wizard akan menawarkan untuk menyimpan string koneksi di Web.config
. Minta menyimpan string koneksi menggunakan nama NorthwindConnectionString
.
Gambar 02: Sambungkan ke Database Northwind (Klik untuk melihat gambar ukuran penuh)
Wizard Konfigurasi Sumber Data menyediakan dua cara di mana kita dapat menentukan kueri yang digunakan untuk mengambil data:
- Dengan menentukan pernyataan SQL kustom atau prosedur tersimpan, atau
- Dengan memilih tabel atau tampilan lalu menentukan kolom yang akan dikembalikan
Karena kami ingin mengembalikan hanya lima produk yang terakhir ditambahkan, kita perlu menentukan pernyataan SQL kustom. Gunakan kueri berikut SELECT
:
SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY ProductID DESC
Kata TOP 5
kunci hanya mengembalikan lima rekaman pertama dari kueri. Kunci Products
primer tabel, ProductID
, adalah IDENTITY
kolom, yang memastikan bahwa setiap produk baru yang ditambahkan ke tabel akan memiliki nilai yang lebih besar dari entri sebelumnya. Oleh karena itu, mengurutkan hasil dengan ProductID
urutan menurut mengembalikan produk yang dimulai dengan yang baru dibuat.
Gambar 03: Mengembalikan Lima Produk yang Terakhir Ditambahkan (Klik untuk melihat gambar ukuran penuh)
Setelah menyelesaikan wizard, Visual Studio menghasilkan dua BoundFields untuk GridView untuk menampilkan bidang dan UnitPrice
yang ProductName
dikembalikan dari database. Pada titik ini markup deklaratif halaman master Anda harus menyertakan markup yang mirip dengan yang berikut ini:
<asp:Label ID="GridMessage" runat="server" EnableViewState="false"></asp:Label>
<asp:GridView ID="RecentProducts" runat="server" AutoGenerateColumns="False"
DataSourceID="RecentProductsDataSource">
<Columns>
<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice"
SortExpression="UnitPrice" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="RecentProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY ProductID DESC">
</asp:SqlDataSource>
Seperti yang Anda lihat, markup berisi: kontrol Label Web (GridMessage
); GridView RecentProducts
, dengan dua BoundFields; dan kontrol SqlDataSource yang mengembalikan lima produk yang terakhir ditambahkan.
Dengan GridView ini dibuat dan kontrol SqlDataSource-nya dikonfigurasi, kunjungi situs web melalui browser. Seperti yang ditunjukkan Gambar 4, Anda akan melihat kisi di sudut kiri bawah yang mencantumkan lima produk yang terakhir ditambahkan.
Gambar 04: GridView Menampilkan Lima Produk yang Terakhir Ditambahkan (Klik untuk melihat gambar ukuran penuh)
Catatan
Jangan ragu untuk membersihkan penampilan GridView. Beberapa saran termasuk memformat nilai yang ditampilkan UnitPrice
sebagai mata uang dan menggunakan warna latar belakang dan font untuk meningkatkan tampilan kisi.
Langkah 2: Membuat Halaman Konten untuk Menambahkan Produk Baru
Tugas kami berikutnya adalah membuat halaman konten tempat pengguna dapat menambahkan produk baru ke Products
tabel. Tambahkan halaman konten baru ke Admin
folder bernama AddProduct.aspx
, pastikan untuk mengikatnya ke Site.master
halaman master. Gambar 5 memperlihatkan Penjelajah Solusi setelah halaman ini ditambahkan ke situs web.
Gambar 05: Tambahkan Halaman ASP.NET Baru ke Admin
Folder (Klik untuk melihat gambar ukuran penuh)
Ingat bahwa dalam Menentukan Judul, Tag Meta, dan Header HTML Lainnya dalam tutorial Halaman Master, kami membuat kelas halaman dasar kustom bernama BasePage
yang menghasilkan judul halaman jika tidak diatur secara eksplisit. Buka kelas kode di AddProduct.aspx
belakang halaman dan dapatkan dari BasePage
(bukan dari System.Web.UI.Page
).
Terakhir, perbarui Web.sitemap
file untuk menyertakan entri untuk pelajaran ini. Tambahkan markup berikut di bawah <siteMapNode>
untuk pelajaran Masalah Penamaan ID Kontrol:
<siteMapNode url="~/Admin/AddProduct.aspx" title="Content to Master Page Interaction" />
Seperti yang ditunjukkan pada Gambar 6, penambahan elemen ini <siteMapNode>
tercermin dalam daftar Pelajaran.
Kembali ke AddProduct.aspx
. Di kontrol Konten untuk MainContent
ContentPlaceHolder, tambahkan kontrol DetailsView dan beri nama NewProduct
. Ikat DetailsView ke kontrol SqlDataSource baru bernama NewProductDataSource
. Seperti SqlDataSource di Langkah 1, konfigurasikan wizard sehingga menggunakan database Northwind dan pilih untuk menentukan pernyataan SQL kustom. Karena DetailsView akan digunakan untuk menambahkan item ke database, kita perlu menentukan SELECT
pernyataan dan INSERT
pernyataan. Gunakan kueri berikut SELECT
:
SELECT ProductName, UnitPrice FROM Products
Kemudian, dari tab INSERT, tambahkan pernyataan berikut INSERT
:
INSERT INTO Products(ProductName, UnitPrice) VALUES(@ProductName, @UnitPrice)
Setelah menyelesaikan wizard, buka tag pintar DetailsView dan centang kotak centang "Aktifkan Penyisipan". Ini menambahkan CommandField ke DetailsView dengan propertinya ShowInsertButton
diatur ke True. Karena DetailsView ini akan digunakan hanya untuk menyisipkan data, atur properti DetailsView DefaultMode
ke Insert
.
Hanya itu saja! Mari kita uji halaman ini. Kunjungi AddProduct.aspx
melalui browser, masukkan nama dan harga (lihat Gambar 6).
Gambar 06: Tambahkan Produk Baru ke Database (Klik untuk melihat gambar ukuran penuh)
Setelah mengetikkan nama dan harga untuk produk baru Anda, klik tombol Sisipkan. Ini menyebabkan formulir untuk postback. Pada postback, pernyataan kontrol INSERT
SqlDataSource dijalankan; dua parameternya diisi dengan nilai yang dimasukkan pengguna dalam dua kontrol TextBox DetailsView. Sayangnya, tidak ada umpan balik visual bahwa penyisipan telah terjadi. Akan lebih baik untuk menampilkan pesan, mengonfirmasi bahwa rekaman baru telah ditambahkan. Saya meninggalkan ini sebagai latihan untuk pembaca. Selain itu, setelah menambahkan rekaman baru dari DetailsView GridView di halaman master masih menampilkan lima rekaman yang sama seperti sebelumnya; ini tidak termasuk catatan yang baru ditambahkan. Kami akan memeriksa cara memperbaikinya dalam langkah-langkah mendatang.
Catatan
Selain menambahkan beberapa bentuk umpan balik visual bahwa sisipan telah berhasil, saya akan mendorong Anda untuk juga memperbarui antarmuka penyisipan DetailsView untuk menyertakan validasi. Saat ini, tidak ada validasi. Jika pengguna memasukkan nilai yang tidak valid untuk UnitPrice
bidang, seperti "Terlalu mahal," pengecualian akan dilemparkan pada postback ketika sistem mencoba mengonversi string tersebut menjadi desimal. Untuk informasi selengkapnya tentang menyesuaikan antarmuka penyisipan, lihat tutorial Menyesuaikan Antarmuka Modifikasi Data dari seri tutorial Bekerja dengan Data saya.
Langkah 3: Membuat Properti dan Metode Publik di Halaman Master
Di Langkah 1 kami menambahkan kontrol Web Label bernama GridMessage
di atas GridView di halaman master. Label ini dimaksudkan untuk menampilkan pesan secara opsional. Misalnya, setelah menambahkan rekaman baru ke Products
tabel, kami mungkin ingin menampilkan pesan yang berbunyi: "ProductName telah ditambahkan ke database." Daripada mengkodekan teks secara permanen untuk Label ini di halaman master, kita mungkin ingin pesan dapat disesuaikan oleh halaman konten.
Karena kontrol Label diimplementasikan sebagai variabel anggota yang dilindungi dalam halaman master, kontrol label tidak dapat diakses langsung dari halaman konten. Untuk bekerja dengan Label dalam halaman master dari halaman konten (atau, untuk hal ini, kontrol Web apa pun di halaman master) kita perlu membuat properti publik di halaman master yang mengekspos kontrol Web atau berfungsi sebagai proksi tempat salah satu propertinya dapat diakses. Tambahkan sintaks berikut ke kelas code-behind halaman master untuk mengekspos properti Label Text
:
Public Property GridMessageText() As String
Get
Return GridMessage.Text
End Get
Set(ByVal Value As String)
GridMessage.Text = Value
End Set
End Property
Saat rekaman baru ditambahkan ke Products
tabel dari halaman RecentProducts
konten, GridView di halaman master perlu digabungkan kembali ke sumber data yang mendasarnya. Untuk mengikat kembali GridView, panggil metodenya DataBind
. Karena GridView di halaman master tidak dapat diakses secara terprogram ke halaman konten, kita perlu membuat metode publik di halaman master yang, ketika dipanggil, mengikat ulang data ke GridView. Tambahkan metode berikut ke kelas code-behind halaman master:
Public Sub RefreshRecentProductsGrid()
RecentProducts.DataBind()
End Sub
GridMessageText
Dengan properti dan RefreshRecentProductsGrid
metode di tempat, halaman konten apa pun dapat secara terprogram mengatur atau membaca nilai GridMessage
properti Label Text
atau menggabungkan ulang data ke RecentProducts
GridView. Langkah 4 memeriksa cara mengakses properti dan metode publik halaman master dari halaman konten.
Catatan
Jangan lupa untuk menandai properti dan metode halaman master sebagai Public
. Jika Anda tidak secara eksplisit menunjukkan properti dan metode ini sebagai Public
, properti dan metode ini tidak akan dapat diakses dari halaman konten.
Langkah 4: Memanggil Anggota Publik Halaman Master dari Halaman Konten
Sekarang setelah halaman master memiliki properti dan metode publik yang diperlukan, kami siap untuk memanggil properti dan metode ini dari AddProduct.aspx
halaman konten. Secara khusus, kita perlu mengatur properti halaman GridMessageText
master dan memanggil metodenya RefreshRecentProductsGrid
setelah produk baru ditambahkan ke database. Semua data ASP.NET Web mengontrol peristiwa kebakaran segera sebelum dan sesudah menyelesaikan berbagai tugas, yang memudahkan pengembang halaman untuk mengambil beberapa tindakan terprogram baik sebelum atau sesudah tugas. Misalnya, ketika pengguna akhir mengklik tombol Sisipkan DetailsView, pada postback DetailsView menaikkan peristiwanya ItemInserting
sebelum memulai alur kerja penyisipan. Kemudian menyisipkan rekaman ke dalam database. Setelah itu, DetailsView memunculkan peristiwanya ItemInserted
. Oleh karena itu, untuk bekerja dengan halaman master setelah produk baru ditambahkan, buat penanganan aktivitas untuk acara DetailsView ItemInserted
.
Ada dua cara agar halaman konten dapat berinteraksi secara terprogram dengan halaman masternya:
Page.Master
Menggunakan properti , yang mengembalikan referensi yang ditik secara longgar ke halaman master, atau- Tentukan jenis halaman master halaman atau jalur file melalui
@MasterType
direktif; ini secara otomatis menambahkan properti yang sangat ditik ke halaman bernamaMaster
.
Mari kita periksa kedua pendekatan.
Menggunakan Properti JenisPage.Master
Longgar
Semua halaman web ASP.NET harus berasal dari Page
kelas , yang terletak di System.Web.UI
namespace layanan. Kelas Page
menyertakan Master
properti yang mengembalikan referensi ke halaman master halaman. Jika halaman tidak memiliki halaman Master
master mengembalikan Nothing
.
Properti Master
mengembalikan objek jenis MasterPage
(juga terletak di System.Web.UI
namespace layanan) yang merupakan jenis dasar dari mana semua halaman master berasal. Oleh karena itu, untuk menggunakan properti publik atau metode yang ditentukan di halaman master situs web kami, kita harus mentransmisikan objek yang MasterPage
dikembalikan dari Master
properti ke jenis yang sesuai. Karena kami menamai file Site.master
halaman master kami , kelas code-behind diberi nama Site
. Oleh karena itu, kode berikut melemparkan Page.Master
properti ke instans Site
kelas.
' Cast the loosely-typed Page.Master property and then set the GridMessageText property
Dim myMasterPage As Site = CType(Page.Master, Site)
Sekarang setelah kita mentransmisikan properti yang diketik Page.Master
secara longgar ke jenis Situs, kita dapat mereferensikan properti dan metode khusus untuk Situs. Seperti yang ditunjukkan oleh Gambar 7, properti GridMessageText
publik muncul di menu drop-down IntelliSense.
Gambar 07: IntelliSense Menunjukkan Properti dan Metode Publik Halaman Master kami (Klik untuk melihat gambar ukuran penuh)
Catatan
Jika Anda menamai file MasterPage.master
halaman master Anda, maka nama kelas di belakang kode halaman master adalah MasterPage
. Ini dapat menyebabkan kode ambigu saat transmisi dari jenis System.Web.UI.MasterPage
ke kelas Anda MasterPage
. Singkatnya, Anda perlu sepenuhnya memenuhi syarat jenis yang Anda transmisikan, yang bisa sedikit sulit saat menggunakan model Proyek Situs Web. Saran saya adalah memastikan bahwa ketika Anda membuat halaman master Anda, Anda menamainya sesuatu selain MasterPage.master
atau, bahkan lebih baik, membuat referensi yang sangat ditik ke halaman master.
Membuat Referensi yang Sangat Ditik dengan@MasterType
Direktif
Jika Anda melihat lebih dekat, Anda dapat melihat bahwa kelas kode belakang halaman ASP.NET adalah kelas parsial (perhatikan Partial
kata kunci dalam definisi kelas). Kelas parsial diperkenalkan dalam C# dan Visual Basic with.NET Framework 2.0 dan, singkatnya, memungkinkan anggota kelas didefinisikan di beberapa file. File kelas code-behind - AddProduct.aspx.vb
, misalnya - berisi kode yang kami, pengembang halaman, buat. Selain kode kami, mesin ASP.NET secara otomatis membuat file kelas terpisah dengan properti dan penanganan aktivitas dalam yang menerjemahkan markup deklaratif ke dalam hierarki kelas halaman.
Pembuatan kode otomatis yang terjadi setiap kali halaman ASP.NET dikunjungi membuka jalan untuk beberapa kemungkinan yang agak menarik dan berguna. Dalam kasus halaman master, jika kita memberi tahu mesin ASP.NET halaman master apa yang digunakan oleh halaman konten kita, halaman tersebut menghasilkan properti yang sangat ditik Master
untuk kita.
Gunakan direktif @MasterType
untuk menginformasikan mesin ASP.NET jenis halaman master halaman konten. Direktif @MasterType
dapat menerima nama jenis halaman master atau jalur filenya. Untuk menentukan bahwa AddProduct.aspx
halaman menggunakan Site.master
sebagai halaman masternya, tambahkan direktif berikut ke bagian AddProduct.aspx
atas :
<%@ MasterType VirtualPath="~/Site.master" %>
Arahan ini menginstruksikan mesin ASP.NET untuk menambahkan referensi yang sangat ditik ke halaman master melalui properti bernama Master
. Dengan direktif @MasterType
di tempat, kita dapat memanggil Site.master
properti dan metode publik halaman master langsung melalui Master
properti tanpa transmisi apa pun.
Catatan
Jika Anda menghilangkan direktif @MasterType
, sintaks Page.Master
dan Master
mengembalikan hal yang sama: objek yang ditik secara longgar ke halaman master halaman. Jika Anda menyertakan direktif @MasterType
, maka Master
mengembalikan referensi yang ditik dengan kuat ke halaman master yang ditentukan. Page.Master
, namun, masih mengembalikan referensi yang ditik secara longgar. Untuk melihat lebih menyeluruh mengapa ini terjadi dan bagaimana Master
properti dibangun ketika @MasterType
direktif disertakan, lihat entri @MasterType
blog K. Scott Allen di ASP.NET 2.0.
Memperbarui Halaman Master Setelah Menambahkan Produk Baru
Sekarang setelah kita tahu cara memanggil properti publik halaman master dan metode dari halaman konten, kita siap untuk memperbarui AddProduct.aspx
halaman sehingga halaman master di-refresh setelah menambahkan produk baru. Di awal Langkah 4 kami membuat penanganan aktivitas untuk peristiwa kontrol ItemInserting
DetailsView, yang dijalankan segera setelah produk baru ditambahkan ke database. Tambahkan kode berikut ke penanganan aktivitas tersebut:
Protected Sub NewProduct_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs) Handles NewProduct.ItemInserted
' Cast the loosely-typed Page.Master property and then set the GridMessageText property
Dim myMasterPage As Site = CType(Page.Master, Site)
myMasterPage.GridMessageText = String.Format("{0} added to grid...", e.Values("ProductName"))
' Use the strongly-typed Master property
Master.RefreshRecentProductsGrid()
End Sub
Kode di atas menggunakan properti yang ditik Page.Master
secara longgar dan properti yang dititik Master
dengan kuat. Perhatikan bahwa GridMessageText
properti diatur ke "ProductName ditambahkan ke kisi..." Nilai produk yang baru ditambahkan dapat diakses melalui e.Values
koleksi; seperti yang Anda lihat, nilai just-added ProductName
diakses melalui e.Values("ProductName")
.
Gambar 8 memperlihatkan AddProduct.aspx
halaman segera setelah produk baru - Scott's Soda - telah ditambahkan ke database. Perhatikan bahwa nama produk yang baru saja ditambahkan dicatat di Label halaman master dan bahwa GridView telah disegarkan untuk menyertakan produk dan harganya.
Gambar 08: Label dan GridView Halaman Master Menampilkan Produk Yang Baru Ditambahkan (Klik untuk melihat gambar ukuran penuh)
Ringkasan
Idealnya, halaman master dan halaman kontennya benar-benar terpisah satu sama lain dan tidak memerlukan tingkat interaksi. Meskipun halaman master dan halaman konten harus dirancang dengan mengingat tujuan tersebut, ada sejumlah skenario umum di mana halaman konten harus berinteraksi dengan halaman masternya. Salah satu alasan paling umum berpusat di sekitar memperbarui bagian tertentu dari tampilan halaman master berdasarkan beberapa tindakan yang ditranspitasikan di halaman konten.
Kabar baiknya adalah bahwa relatif mudah untuk memiliki halaman konten yang berinteraksi secara terprogram dengan halaman masternya. Mulailah dengan membuat properti atau metode publik di halaman master yang merangkum fungsionalitas yang perlu dipanggil oleh halaman konten. Kemudian, di halaman konten, akses properti dan metode halaman master melalui properti yang ditik Page.Master
secara longgar atau gunakan @MasterType
direktif untuk membuat referensi yang sangat di ketik ke halaman master.
Dalam tutorial berikutnya kami memeriksa cara membuat halaman master berinteraksi secara terprogram dengan salah satu halaman kontennya.
Selamat Pemrograman!
Bacaan lebih lanjut
Untuk informasi selengkapnya tentang topik yang dibahas dalam tutorial ini, lihat sumber daya berikut:
- Mengakses dan Memperbarui Data di ASP.NET
- ASP.NET Halaman Master: Tips, Trik, dan Perangkap
@MasterType
dalam ASP.NET 2.0- Meneruskan Informasi Antara Konten dan Halaman Master
- Bekerja dengan Data dalam Tutorial ASP.NET
Tentang Penulis
Scott Mitchell, penulis beberapa buku ASP/ASP.NET dan pendiri 4GuysFromRolla.com, telah bekerja dengan teknologi Microsoft Web sejak 1998. Scott bekerja sebagai konsultan, pelatih, dan penulis independen. Buku terbarunya adalah Sams Teach Yourself ASP.NET 3,5 dalam 24 Jam. Scott dapat dijangkau di mitchell@4GuysFromRolla.com atau melalui blognya di http://ScottOnWriting.NET.
Terima kasih khusus untuk
Seri tutorial ini ditinjau oleh banyak peninjau yang bermanfaat. Peninjau prospek untuk tutorial ini adalah Zack Jones. Tertarik untuk meninjau artikel MSDN saya yang akan datang? Jika demikian, menjatuhkan saya baris di mitchell@4GuysFromRolla.com