Kontrol Datagrid
Kontrol Datagrid memungkinkan Anda untuk menghasilkan daftar format sumber data yang kaya. Selain itu, ini juga mendukung item seleksi dengan operasi lain.
Empat contoh bagian ini menggunakan tabel yang mencakup informasi judul (judul, ID judul, penulis, harga dan tanggal penerbitan). Semua data disimpan dengan XML di TitleSDB.xml. Saat membuat halaman untuk mewakili konten tabel ini dan memilih buku, contoh -contoh ini mengikuti metode tambahan. Daftar kode berisi teks tubuh hitam untuk menunjukkan perubahan yang dibuat oleh sampel yang dibangun pada contoh sebelumnya.
Tes dari TitleSdb.xml:
<soot>
<schema id = documentElement targetnamespace =
xmlns = http://www.w3.org/1999/xmlschema
xmlns: msdata = guci: schemas-microsoft-com: xml-msdata>
<Element Name = Table>
<Complextype Content = ElementsOnly>
<element name = title_id type = string> </sement>
<element name = type type = string> </sement>
<name elemen = au_name type = string> </sement>
<elemen nama = harga msdata: datasype = system.currency
minoccurs = 0
Type = string> </sement>
<element name = pubdate type = timeInstant> </sement>
</complextype>
<nique name = titleconstraint msdata: primerKey = true>
<pes selector>
<field> title_id </field>
</unik>
</sement>
</chema>
<mrocomelement>
<title>
<title_id> bu1032 </itement_id>
<iteme> Panduan Basis Data Eksekutif yang sibuk </iteme>
<mm_name> Marjorie Green </AU_NAME>
<seraya> 19.99 </setil>
<mubdate> 1991-06-12t07: 00: 00 </bubdate>
</title>
Elastis
</documentelement>
</soot>
Dalam aplikasi web yang khas, untuk mendapatkan skalabilitas dan kinerja maksimum, kemungkinan akan menggunakan layanan web atau objek bisnis untuk mengakses data. Untuk menyederhanakan contoh -contoh ini dan fokus menggunakan Datagrid alih -alih akses data, kami memilih untuk memuat data sekaligus ketika aplikasi dimulai, dan dalam status aplikasi ASP di Global.asax Show.
Batang dari Global.asax:
public void application_onstart () {) {)
FileStream fs = null;
dataset ds = null;
mencoba {
fs = filestream baru (server.mappath (titlesdb.xml), filemode.open,
Fileaccess.read);
ds = dataset baru ();
// Muat data dalam file XML ke dataset
ds.readxml (fs);
} Akhirnya {
if (fs! = null) {
fs.close ();
fs = null;
}
}
// CCHESTRATE Data set pada kecepatan tinggi ke status aplikasi sehingga dapat digunakan dalam satu halaman
Aplikasi [TitleSdataSet] = DS;
}
datagrid1
Datagrid1 menggambarkan penggunaan dasar Datagrid, yang menjelaskan bagaimana kontrol menggunakan kode pengguna terkecil untuk menghasilkan fungsi yang kaya.
ARA
Masukkan dari datagrid1.aspx:
<%@halaman bahasa = C# src = datagrid.cs warisan = sampel.datagridpage%>
Elastis
<ASP: Datagrid runat = server id = TitlesGrid>
</asp: datagrid>
File .aspx di atas menunjukkan pernyataan tanpa atribut apa pun tanpa atribut kontrol datagrid.
datagrid.cs:
sampel namespace {
Elastis
DataGridPage kelas publik: halaman {
Judul Datagrid yang Dilindungi;
Public icollection getTitlesList () {
// Kembalikan daftar judul dari dataset cache kecepatan tinggi di status aplikasi.
DataSet TitleSDataSet = (Dataset) Aplikasi [TitleSDataSet];
if (TitleSdataSet! = null) {
Return titleDataset.tables [title] .defaultView;
}
kalau tidak {
Kembali nol;
}
}
Private void loadTitlesGrid () {) {)
// Cari data dari database
icollection titleSlist = getTitlesList ();
// Atur sumber data kontrol
TitleSgrid.Datasource = TitleSlist;
// dan membuatnya menggunakan sumber data ini untuk membangun proyeknya
TitleSgrid.databind ();
}
Override void overoad (EventArgs e) {{{{{{{{{
base.onload (e);
if (! isPostBack) {
// Lihat halaman ini untuk pertama kalinya
loadtitlesGrid ();
}
}
}
}
File .cs berisi kode yang digunakan untuk halaman ini. Kode ini sama dengan fungsi kode yang digunakan dalam contoh Datalist1. Dalam permintaan pertama untuk halaman ini, ini mencakup metode online untuk mengambil data dan mengatur properti DataSource dari kontrol sebelum memanggil databind. Ini akan membuat datagrid membuat proyeknya, yang merupakan baris yang diperlukan dalam tabel. Dalam proses pengembalian pemrosesan, Datagrid menggunakan kembali proyek dari status (keadaan ini mencakup konten sel yang disimpan dalam permintaan terakhir).
Contoh ini menggambarkan fungsi properti autogenerateColumns dari kontrol datagrid. Nilai default atribut ini benar. Saat diatur ke True, Datagrid akan menggunakan refleksi untuk memeriksa sumber dan objek data dan membuat kolom untuk setiap atribut atau bidang publik. Dalam contoh ini, kontrol mewakili semua bidang saat ini dalam tabel "judul". Fitur ini memungkinkan daftar kode pengguna terkecil untuk menghasilkan daftar sumber data apa pun dengan cepat dan mudah.
Setiap jenis kolom otomatis adalah BoundColumn. Jenis kolom ini mengonversi nilai atribut yang terkait dengannya menjadi string yang perlu digunakan sebagai jendela.
datagrid2
Datagrid2 menjelaskan set Datagrid yang ditetapkan oleh kolom yang diatur dalam file .aspx.
Gambar 5. Contoh yang dihasilkan dengan menggunakan Datagrid kolom yang ditentukan
Kutipan dari datagrid2.aspx:
<%@halaman bahasa = C# src = datagrid.cs warisan = sampel.datagridpage%>
Elastis
<Asp: Datagrid runat = server id = TitleSgrid
AutogenerateColumns = false>
<poperty name = kolom>
<ASP: BoundColumn headeltext = title datafield = title/>
<ASP: BoundColumn headeltext = penulis datafield = au_name/>
<Asp: BoundColumn HeaderText = Date Datafield yang Diterbitkan = PubDate/>
<ASP: BoundColumn Headeltext = harga datafield = harga/>
</propt>
</asp: datagrid>
File .aspx ini menunjukkan kontrol datagrid dengan kolom yang ditetapkan oleh pengguna. Contoh ini menggunakan file yang didukung kode yang sama seperti Datagrid1 karena tidak ada kode yang diperlukan.
Properti AutogenerateColumns dari Datagrid diatur ke palsu, sehingga dapat mencegah kontrol dari secara otomatis menghasilkan kolom, dan memungkinkan pengguna untuk bertanggung jawab untuk mendefinisikan kolom yang akan diwakili dalam tabel.
Ada banyak manfaat:
Anda dapat mengontrol urutan kolom. Daftar dalam urutan pernyataan. Di sisi lain, kolom otomatis diwakili oleh pesanan yang diambil oleh gambar.
Anda dapat menentukan header setiap kolom dengan properti headertext kolom. Pada contoh sebelumnya, header label menunjukkan nama bidang, yang mungkin tidak sesuai. Saat menggunakan kontrol dalam mode ini, Columbns juga menawarkan atribut lain yang dapat diatur.
Jenis kolom otomatis selalu diikat. Tentukan set kolom sehingga pengguna dapat mengontrol jenis setiap kolom.
datagrid3
DataGrid3 dibangun di DataGrid2 dengan menambahkan pemformatan dan pemformatan visual.
Gambar 6. Contoh yang dihasilkan oleh datagrid yang menetapkan atribut gaya dan format
Kutipan dari datagrid3.aspx:
<%@halaman bahasa = C# src = datagrid.cs warisan = sampel.datagridpage%>
Elastis
<Asp: Datagrid runat = server id = TitleSgrid
AutogenerateColumns = false
Lebar = 80%
backcolor = putih
BorderWidth = 1px Borderstyle = Cellpadding padat = 2 sel sel = 0
BorderColor = tan
font-name = Song gaya font-size = 8pt>
<poperty name = kolom>
<ASP: BoundColumn headeltext = title datafield = title/>
<ASP: BoundColumn headeltext = penulis datafield = au_name/>
<Asp: BoundColumn HeaderText = Tanggal Datafield yang Diterbitkan = PubDate
DataFaMaTstring = {0: mmm yyyy}/>
<ASP: BoundColumn Headeltext = Harga DataField = Harga
DataFaMaTstring = {0: c}>
<poperty name = itemstyle>
<ASP: TableItemstyle horizontalalign = kanan/>
</propt>
</asp: BoundDcolumn>
</propt>
<poperty name = headstyle>
<Asp: TableItemstyle Backcolor = Darkred Forecolor = White
font-black = true/>
</propt>
<poperty name = itemstyle>
<Asp: TableItemstyle Forecolor = Darkslateblue/>
</propt>
<Poperty Name = bolak -baliktemStyle>
<Asp: TableItemstyle Backcolor = Beige/>
</propt>
</asp: datagrid>
File .aspx ini menunjukkan pernyataan kontrol datagrid yang sama seperti sebelumnya, dan mengatur berbagai atribut gaya. Ini akan mengarah pada representasi yang lebih menarik. Masih tidak perlu membuat perubahan pada kode, dan penggunaan kode yang didukung oleh contoh yang sama seperti contoh sebelumnya.
Karena diperoleh dari WebControl, kontrol datagrid mewarisi atribut gaya seperti lebar, backcolor, borderstyle, dan font.name. Selain itu, Datagrid menawarkan atribut seperti cellpadding, yang khusus untuk tabel. Atribut ini diizinkan untuk menyesuaikan kontrol secara keseluruhan.
Pernyataan itu juga menampilkan beberapa set gaya proyek, seperti gaya header dan bolak -balik. Gaya -gaya ini mengontrol penampilan item yang sesuai. Harap dicatat bahwa gaya gaya muncul dalam contoh ini. Proyek -proyek alternatifnya sama dengan prospek proyek umum, karena gaya mereka adalah kombinasi bolak -balik dan itemstyle. Akhirnya, contoh ini juga menjelaskan gaya kolom tertentu melalui teks di kolom harga -untuk -Alignment kanan.
Datagrid juga memungkinkan Anda untuk memformat konten teks di selnya. Ini diselesaikan dengan mengatur nilai properti DataFormatString dari BoundColumn. Kolom menggunakan formatnya untuk memformat konten sel String.format. Atribut ini dapat ditetapkan atau dilampirkan ke konten apa pun dengan jenis pemformatan (seperti tanggal atau mata uang). Selain itu, karena pemformatan mempertimbangkan CultureInfo dan permintaan halaman saat ini, ia juga mendukung globalisasi. Jika tidak ada format yang ditentukan, gunakan metode ToString dari nilai ini.
datagrid4
Datagrid4 menjelaskan cara menggunakan pilihan dalam DataGrid dengan menangani acara SelectedIndIndExchanged.
Gambar 7. Contoh yang dihasilkan dengan memungkinkan item yang berisi datagrid
Tes dari datagrid4.aspx:
<%@halaman bahasa = C# src = datagrid4.cs warisan = sampel.datagrid4page%>
Elastis
<Asp: Datagrid runat = server id = TitleSgrid
AutogenerateColumns = false
Lebar = 80%
backcolor = putih
BorderWidth = 1px Borderstyle = Cellpadding padat = 2 sel sel = 0
BorderColor = tan
font-name = gaya lagu font-size = 8pt
datakeyfield = title_id
OnselectectedExchanged = OnselectExchangededesGrid>
<poperty name = kolom>
<Asp: ButtonColumn Text = Pilih Perintah = Pilih/>
<ASP: BoundColumn headeltext = title datafield = title/>
<ASP: BoundColumn headeltext = penulis datafield = au_name/>
<Asp: BoundColumn HeaderText = Tanggal Datafield yang Diterbitkan = PubDate
DataFaMaTstring = {0: mmm yyyy}/>
<ASP: BoundColumn Headeltext = Harga DataField = Harga
DataFaMaTstring = {0: c}>
<poperty name = itemstyle>
<ASP: TableItemstyle horizontalalign = kanan/>
</propt>
</asp: BoundDcolumn>
</propt>
<poperty name = headstyle>
<Asp: TableItemstyle Backcolor = Darkred Forecolor = White
font-black = true/>
</propt>
<poperty name = itemstyle>
<Asp: TableItemstyle Forecolor = Darkslateblue/>
</propt>
<Poperty Name = bolak -baliktemStyle>
<Asp: TableItemstyle Backcolor = Beige/>
</propt>
<Poperty Name = SelectDitemStyle>
<Asp: TableItemstyle Backcolor = Palegoldenrod Font-Bold = True/>
</propt>
</asp: datagrid>
Elastis
<ASP: Label runat = server id = selectInfolabel font-name = gaya lagu font-size = 8pt/>
Dalam file .aspx, program pemrosesan acara terdaftar untuk acara acara DataGrid yang dipilih. Program pemrosesan insiden ini diimplementasikan dalam file yang didukung kode. ButtonColumn, yang telah ditambahkan ke kolom yang ditetapkan sebagai "Pilih", membuat Datagrid mewakili kolom tambahan yang berisi tombol Pilih untuk setiap proyek. Pada saat yang sama, SELECTERITEMSTYLE ditentukan. Gaya ini digunakan untuk membedakan proyek dari visual. Akhirnya, atribut Datakeyfield Datagrid ditentukan. Bidang ini akan ditempatkan di koleksi Datagrid Datakeys, yang akan digunakan dalam file dengan dukungan kode.
datagrid4.cs:
sampel namespace {
Elastis
Public Class DataGrid4Page: Page {
Judul Datagrid yang Dilindungi;
Label label searchinfolabel;
Public icollection getTitlesList () {
// Kembalikan daftar judul dari dataset cache kecepatan tinggi di status aplikasi.
DataSet TitleSDataSet = (Dataset) Aplikasi [TitleSDataSet];
if (TitleSdataSet! = null) {
Return titleDataset.tables [title] .defaultView;
}
kalau tidak {
Kembali nol;
}
}
Private void loadTitlesGrid () {) {)
// Cari data dari database
icollection titleSlist = getTitlesList ();
// Atur sumber data kontrol dan setel ulang pilihannya,
TitleSgrid.Datasource = TitleSlist;
TitleSgrid.SelectDIndex = -1;
// dan buat kontrol menggunakan sumber data ini untuk membangun proyeknya
TitleSgrid.databind ();
// Perbarui informasi judul yang dipilih
UpdateDeLectTitalInfo ();
}
Override void overoad (EventArgs e) {{{{{{{{{
base.onload (e);
if (! isPostBack) {
// Lihat halaman ini untuk pertama kalinya
loadtitlesGrid ();
}
}
// Memproses acara OnSelectIndIndIndExchanged datagrid
Void yang dilindungi OnselectectedIndExchangedTitlesGrid (pengirim objek,
EventArgs e) {
UpdateDeLectTitalInfo ();
}
Private void updateSeLectTitiveInfo () {{) {
// Dapatkan indeks yang dipilih
int selIndex = titleSgrid.selectex;
string selfieid = null;
string selectInfo;
if (selIndex! = -1) {{
// Tampilkan bidang kunci dari judul yang dipilih
Seltitleid = (string) titleSgrid.data [selIndex];
SelectionInfo = ID judul yang dipilih: + seltitleid;
}
kalau tidak {
selectInfo = tidak ada judul yang saat ini dipilih.;
}
sfectinfolabel.text = selectInfo;
}
}
}
File .cs ini berisi logika penanganan peristiwa yang dipilih dengan baik dan logika ID dari judul yang dipilih di Datagrid. Datagrid menangani acara perintah, yang dipicu oleh tombol yang termasuk dalam proyeknya. Ini mengenali perintah standar "Select", yang membuatnya mengubah properti yang dipilih dan memicu kejadian ini untuk mengubah kode memberi tahu pengguna.
Dalam proses mengimplementasikan program pemrosesan acara, kode contoh memanggil metode UpdatesElectTitleInfo. Metode ini bertanggung jawab untuk menampilkan informasi tentang judul buku yang dipilih. Dalam skema yang lebih realistis, ID ini dapat digunakan untuk menautkan halaman untuk menampilkan detail lebih lanjut tentang judul yang dipilih.
ID diambil dengan mengunjungi koleksi Datakeys. Koleksi ini diatur karena atribut Datakeyfield. Biasanya, atur sebagai kata kunci utama atau bidang lain yang dapat diidentifikasi oleh rumah tangga, dan menggunakan informasi ini sebagai pedoman dalam kueri database -follow -UP atau data filter.
Contoh ini menunjukkan cara mendukung operasi lebih lanjut seperti memilih objek di sumber data selain hanya objek dalam sumber data. Datagrid berisi dukungan untuk beberapa fitur lain (seperti penyortiran, paging, editor di tempat, dan TemplateColumns). Namun, fitur -fitur spesifik ini melebihi ruang lingkup diskusi artikel ini dan akan dibahas dalam artikel mendatang.
Repeater, Distalist atau Datagrid?
Repeater, datalis dan datagrid kontrol berbagi model pemrograman publik. Pada saat yang sama, setiap kontrol dirancang untuk fokus pada skema tertentu. Bagian ini menjelaskan fungsi hierarki kontrol dan fungsi masing -masing kontrol, serta contoh solusi khas yang dapat digunakan masing -masing kontrol.
Seperti yang dapat Anda lihat di struktur kelas di bawah ini, Repeater adalah kontrol kecil dan ringan. Ini hanya mewarisi fungsi kelas kontrol dasar, seperti atribut ID dan set sub -kontrol. Di sisi lain, kontrol datalis dan kontrol datagrid mewarisi fungsi WebControl, seperti atribut gaya dan penampilan.
Gambar 8. Daftar -Mengikat Kontrol Struktur Level Kelas
Dalam hal model objek, kontrol repeater adalah kontrol paling sederhana. Ini juga merupakan kontrol pengikatan data terkecil dan pada dasarnya berbeda, yaitu, itu tidak memaksa tata letak UI khusus. Metode indikasi akhir mengikuti metode menghasilkan teks. Kontrol ini tidak memberikan dukungan -di yang dibangun untuk gaya dan atribut penampilan atau perilaku. Ini adalah pilihan yang sangat baik untuk solusi yang perlu dikendalikan sepenuhnya.
Kontrol datalist adalah repeater yang dipaksa menggunakan tata letak kolom atau tata letak aliran. Ini mewarisi atribut penampilan yang diimplementasikan dalam WebControl dan menambahkan atribut gaya lain yang cocok untuk item yang dibuatnya. Kontrol distalist juga mencakup dukungan untuk operasi standar proyeknya (seperti memilih, mengedit dan menghapus). Sangat cocok untuk aliran urutan level atau proyek vertikal yang didistribusikan dalam baris atau baris.
Kontrol datagrid dipaksa untuk menggunakan daftar atau tata letak baris. Mirip dengan distalist, kontrol ini memberikan gaya dan atribut penampilan. Selain memilih dan mengedit, Datagrid juga mendukung operasi lanjutan pada pengumpulan seluruh proyek, seperti halaman dan penyortiran. Salah satu perbedaan utama antara datagrid dan datalis adalah bahwa Datagrid tidak mengandung atribut templat apa pun, yaitu, proyek atau non -templat dari kontrol datagrid. Namun, tambahkan TemplateColumn ke Datagrid untuk menggunakan template di kolom tertentu.
Tabel berikut adalah ringkasan fungsi yang disediakan oleh Kontrol Ikatan Daftar.
Fungsi datagrid datalis repeater fungsi
Template (diperlukan) atau di dalam kolom (diperlukan) (opsional)
Apakah tata letak daftar?
Adalah tata letak aliran
Apakah tata letak gaya kolom distribusi/koran?
Apakah atribut gaya dan penampilannya
Pilih apakah ya
Edit
Apakah itu dihapus?
Tidak ada pagination
Apakah itu disortir?
Sumber daya terkait
Dengan contoh QuickStart yang diterbitkan oleh Microsoft .NET Framework SDK, ada beberapa contoh kontrol ini, dan contoh -contoh yang menjelaskan data yang mengakses data dengan XML dan layanan web. Dokumen yang dilampirkan pada SDK mencakup data konseptual dari topik yang relevan, seperti kerangka kerja Asp+ Page dan kontrol server, dan bibliografi referensi dari model objek sebagai bagian dari kontrol bingkai ini.