Bagikan melalui


Mengatur Nilai Parameter (VB) ObjectDataSource secara terprogram

oleh Scott Mitchell

Unduh PDF

Dalam tutorial ini kita akan melihat menambahkan metode ke DAL dan BLL kita yang menerima parameter input tunggal dan mengembalikan data. Contohnya akan mengatur parameter ini secara terprogram.

Pendahuluan

Seperti yang kita lihat di tutorial sebelumnya, sejumlah opsi tersedia untuk meneruskan nilai parameter secara deklaratif ke metode ObjectDataSource. Jika nilai parameter dikodekan secara permanen, berasal dari kontrol Web di halaman, atau berada di sumber lain yang dapat dibaca oleh objek sumber Parameter data, misalnya, nilai tersebut dapat terikat ke parameter input tanpa menulis baris kode.

Namun, mungkin ada kalanya nilai parameter berasal dari beberapa sumber yang belum diperhitungkan oleh salah satu objek sumber Parameter data bawaan. Jika situs kami mendukung akun pengguna, kami mungkin ingin mengatur parameter berdasarkan ID Pengguna dari pengunjung yang saat ini masuk. Atau kita mungkin perlu menyesuaikan nilai parameter sebelum mengirimkannya ke metode objek dasar ObjectDataSource.

Setiap kali metode ObjectDataSource Select dipanggil, ObjectDataSource pertama kali memunculkan peristiwa Pemilihan. Metode objek dasar ObjectDataSource kemudian dipanggil. Setelah proses itu selesai, peristiwa Selected dari ObjectDataSource akan diaktifkan (Gambar 1 mengilustrasikan urutan peristiwa ini). Nilai parameter yang diteruskan ke metode objek dasar ObjectDataSource dapat diatur atau dikustomisasi dalam penanganan aktivitas untuk peristiwa tersebut Selecting .

Peristiwa Selected dan Selecting dari ObjectDataSource dipicu sebelum dan setelah metode objek yang mendasarinya dipanggil

Gambar 1: Acara dalam ObjectDataSource Selected dan Selecting Terpicu Sebelum dan Sesudah Metode dari Objek Dasar Dipanggil (Klik untuk melihat gambar ukuran penuh)

Dalam tutorial ini kita akan melihat cara menambahkan metode ke DAL dan BLL kita yang menerima parameter Month input tunggal, dari jenis Integer dan menghasilkan objek EmployeesDataTable yang diisi dengan karyawan yang memiliki ulang tahun perekrutan mereka dalam Month yang ditentukan. Contoh kami akan mengatur parameter ini secara terprogram berdasarkan bulan ini, memperlihatkan daftar "Employee Anniversaries This Month."

Mari kita mulai!

Langkah 1: Menambahkan Metode keEmployeesTableAdapter

Untuk contoh pertama kami, kami perlu menambahkan cara untuk memperoleh karyawan yang HireDate terjadi dalam bulan tertentu. Untuk menyediakan fungsionalitas ini sesuai dengan arsitektur kami, kita perlu terlebih dahulu membuat metode dalam EmployeesTableAdapter yang memetakan ke pernyataan SQL yang tepat. Untuk mencapai hal ini, mulailah dengan membuka Himpunan Data Jenis Northwind. Klik kanan pada EmployeesTableAdapter label dan pilih Tambahkan Kueri.

Menambahkan Kueri Baru ke EmployeesTableAdapter

Gambar 2: Tambahkan Kueri Baru ke EmployeesTableAdapter (Klik untuk menampilkan gambar ukuran penuh)

Pilih untuk menambahkan pernyataan SQL yang mengembalikan baris. Saat Anda mencapai layar Tentukan Pernyataan SELECT, pernyataan default SELECT untuk EmployeesTableAdapter sudah akan dimuat. Cukup tambahkan klausa WHERE: WHERE DATEPART(m, HireDate) = @Month. DATEPART adalah fungsi T-SQL yang mengembalikan bagian tanggal tertentu dari datetime jenis; dalam hal ini kita menggunakan DATEPART untuk mengembalikan bulan HireDate kolom.

Hanya mengembalikan baris di mana kolom HireDate kurang dari atau sama dengan parameter <span class= @HiredBeforeDate " />

Gambar 3: Kembalikan hanya baris di mana kolom HireDate kurang dari atau sama dengan parameter @HiredBeforeDate (Klik untuk melihat gambar ukuran penuh)

Terakhir, ubah FillBy nama metode dan GetDataBy menjadi FillByHiredDateMonth dan GetEmployeesByHiredDateMonth, masing-masing.

Pilih Nama Metode yang Lebih Sesuai Daripada FillBy dan GetDataBy

Gambar 4: Pilih Nama Metode yang Lebih Sesuai Daripada FillBy dan GetDataBy (Klik untuk melihat gambar ukuran penuh)

Klik Selesai untuk menyelesaikan wizard dan kembali ke permukaan desain DataSet. EmployeesTableAdapter sekarang harus menyertakan serangkaian metode baru untuk mengakses karyawan yang dipekerjakan dalam bulan tertentu.

Metode Baru Muncul di Permukaan Desain Himpunan Data

Gambar 5: Metode Baru Muncul di Permukaan Desain Himpunan Data (Klik untuk melihat gambar ukuran penuh)

Langkah 2: MenambahkanGetEmployeesByHiredDateMonth(month)Metode ke Lapisan Logika Bisnis

Karena arsitektur aplikasi kami menggunakan lapisan terpisah untuk logika bisnis dan logika akses data, kita perlu menambahkan metode ke BLL kita yang memanggil ke DAL untuk mengambil karyawan yang dipekerjakan sebelum tanggal yang ditentukan. EmployeesBLL.vb Buka file dan tambahkan metode berikut:

<System.ComponentModel.DataObjectMethodAttribute _
    (System.ComponentModel.DataObjectMethodType.Select, False)> _
Public Function GetEmployeesByHiredDateMonth(ByVal month As Integer) _
    As Northwind.EmployeesDataTable
    Return Adapter.GetEmployeesByHiredDateMonth(month)
End Function

Seperti metode kami yang lain di kelas ini, GetEmployeesByHiredDateMonth(month) cukup memanggil DAL dan mengembalikan hasilnya.

Langkah 3: Menampilkan Karyawan yang Hari Jadi Perekrutannya Adalah Bulan Ini

Langkah terakhir kami untuk contoh ini adalah menampilkan karyawan yang hari jadi perekrutannya bulan ini. Mulailah dengan menambahkan GridView ke ProgrammaticParams.aspx halaman di BasicReporting folder dan tambahkan ObjectDataSource baru sebagai sumber datanya. Konfigurasikan ObjectDataSource untuk menggunakan kelas EmployeesBLL dengan pengaturan SelectMethod ke GetEmployeesByHiredDateMonth(month).

Menggunakan Kelas EmployeesBLL

Gambar 6: Gunakan EmployeesBLL Kelas (Klik untuk melihat gambar ukuran penuh)

Pilih dari metode GetEmployeesByHiredDateMonth(bulan)

Gambar 7: Pilih Dari GetEmployeesByHiredDateMonth(month) metode (Klik untuk melihat gambar ukuran penuh)

Layar akhir meminta kami untuk memberikan month sumber nilai parameter. Karena kita akan mengatur nilai ini secara terprogram, biarkan Sumber parameter diatur ke opsi Tidak Ada default dan klik Selesai.

Biarkan Sumber Parameter Tetap None

Gambar 8: Biarkan Sumber Parameter Diatur ke Tidak Ada (Klik untuk melihat gambar ukuran penuh)

Ini akan membuat Parameter objek dalam koleksi ObjectDataSource SelectParameters yang tidak memiliki nilai yang ditentukan.

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    OldValuesParameterFormatString="original_{0}"
    SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">
    <SelectParameters>
        <asp:Parameter Name="month" Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>

Untuk mengatur nilai ini secara terprogram, kita perlu membuat penanganan aktivitas untuk peristiwa ObjectDataSource Selecting . Untuk mencapai hal ini, buka tampilan Desain dan klik dua kali ObjectDataSource. Atau, pilih ObjectDataSource, buka jendela Properti, dan klik ikon petir. Selanjutnya, klik dua kali di kotak teks di samping Selecting peristiwa atau ketik nama penanganan aktivitas yang ingin Anda gunakan. Sebagai opsi ketiga, Anda dapat membuat penanganan aktivitas dengan memilih ObjectDataSource dan peristiwanya Selecting dari dua daftar drop-down di bagian atas kelas code-behind halaman.

Klik Ikon Lightning Bolt di Jendela Properti untuk Mencantumkan Peristiwa Kontrol Web

Gambar 9: Klik Ikon Lightning Bolt di Jendela Properti untuk Mencantumkan Peristiwa Kontrol Web

Ketiga pendekatan menambahkan penanganan aktivitas baru untuk peristiwa ObjectDataSource Selecting ke kelas kode di belakang halaman. Dalam penanganan aktivitas ini kita dapat membaca dan menulis ke nilai parameter menggunakan e.InputParameters(parameterName), di mana parameterName adalah nilai Name atribut dalam <asp:Parameter> tag ( InputParameters koleksi juga dapat diindeks secara biasa, seperti dalam e.InputParameters(index)). Untuk mengatur month parameter ke bulan saat ini, tambahkan yang berikut ini ke penanganan Selecting kejadian:

Protected Sub ObjectDataSource1_Selecting _
    (sender As Object, e As ObjectDataSourceSelectingEventArgs) _
        Handles ObjectDataSource1.Selecting
    e.InputParameters("month") = DateTime.Now.Month
End Sub

Ketika mengunjungi halaman ini melalui browser kita dapat melihat bahwa hanya satu karyawan yang dipekerjakan bulan ini (Maret) Laura Callahan, yang telah bersama perusahaan sejak 1994.

Karyawan yang hari jadinya bulan ini ditampilkan

Gambar 10: Karyawan yang Hari Jadinya Bulan Ini Ditampilkan (Klik untuk melihat gambar ukuran penuh)

Ringkasan

Meskipun nilai parameter ObjectDataSource biasanya dapat diatur secara deklaratif, tanpa memerlukan baris kode, mudah untuk mengatur nilai parameter secara terprogram. Yang perlu kita lakukan adalah membuat penanganan aktivitas untuk peristiwa ObjectDataSource Selecting , yang diaktifkan sebelum metode objek yang mendasar dipanggil, dan secara manual mengatur nilai untuk satu atau beberapa parameter melalui InputParameters koleksi.

Tutorial ini menyimpulkan bagian Pelaporan Dasar. Tutorial berikutnya memulai bagian Pemfilteran dan skenario Master-Details, di mana kita akan melihat teknik untuk memungkinkan pengunjung memfilter data dan menelusuri paling detail dari laporan master ke dalam laporan detail.

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.

Ucapan terima kasih khusus kepada

Seri tutorial ini ditinjau oleh banyak peninjau yang bermanfaat. Peninjau prospek untuk tutorial ini adalah Hilton Giesenow. Tertarik untuk meninjau artikel MSDN saya yang akan datang? Jika demikian, hubungi saya di mitchell@4GuysFromRolla.com.