Dalam pengembangan proyek situs ASP.NET, data sering kali ditampilkan dalam bentuk tabel. Metode yang paling umum digunakan mungkin adalah cara DataGrid mengikat data DataSet. Dalam proyek perangkat lunak yang saya kerjakan, ada tiga cara umum memproses data tabular.
1. DataGrid mengikat sumber data. Metode ini paling banyak digunakan, namun metode pengikatan sempurna antara DataGrid dan ADO.NET masih mengganggu. Gaya DataGrid yang seragam sulit untuk diadaptasi dengan gaya khusus proyek yang berbeda, dan personalisasi pada DataGrid akan sangat merepotkan.
2. Gunakan XML (data) + XSL (style sheet). Seperti yang Anda pahami, mekanisme implementasi pengikatan DataSet ke DataGrid tidak lebih dari ini. Seperti yang ditunjukkan pada gambar, untuk mengimplementasikan tabel seperti itu, pengembang dapat mendesain gaya XSL sebanyak yang mereka suka.
3. Menarik data langsung ke HTML. Cara ini agak kasar, tapi terkadang sangat efektif. Mari kita lihat kode implementasinya terlebih dahulu. Kode berikut mengimplementasikan tabel yang ditunjukkan pada gambar di atas.
1<table style="WIDTH: 100%; BORDER-COLLAPSE: collaps; HEIGHT: 10px">
2 <tr>
3 <td align="tengah">
4 <TABEL id="tblContainer" class="MsoNormalTable" style="WIDTH: 380px; BORDER-COLLAPSE: runtuh; TINGGI: 10px"
5 cellSpacing="0" cellPadding="6" border="1" runat="server" bordercolor="#99cccc">
6 <tr>
7 <td colspan="2" align="tengah">
8 <P><FONT size="3"><STRONG><FONT face="宋体">Posisi Personalia Departemen Manajemen Umum</FONT></STRONG></FONT></P>
9 </td>
10</tr>
11 <tr>
12 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>Nama personel</STRONG></FONT></td>
13 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>Posisi Departemen</STRONG></FONT></td>
14</tr>
15 </TABEL>
16 </td>
17</tr>
18 </tabel>
Langsung gunakan metode Tambah ASP.NET WebControls untuk menambahkan Label ke Sel HTML.
1 WebForm2 kelas publik : Sistem.Web.UI.Halaman
2 {
3
4 struktur PersonRole
5 {
6 nama string publik;
7 peran string publik;
8}
9
10 System.Web.UI.HtmlControls.HtmlTable tblContainer yang dilindungi;
11 string publik strAuditItemID = "A899B637-AC47-42EB-9B61-A61C9C880DDC";
12 private void Page_Load(pengirim objek, System.EventArgs e)
13 {
14 //Masukkan kode pengguna di sini untuk menginisialisasi halaman
15 if(Request.QueryString["AuditItemID"] != null)
16 {
17 strAuditItemID = Permintaan.QueryString["AuditItemID"].ToString();
18}
19
20 GetTeamMember(strAuditItemID);
dua puluh satu }
dua puluh dua
23 Kode yang dihasilkan oleh Perancang Formulir Web#region Kode yang dihasilkan oleh Perancang Formulir Web
24 menimpa void OnInit yang dilindungi (EventArgs e)
25 {
26 //
27 // CODEGEN: Panggilan ini diperlukan oleh perancang Formulir Web ASP.NET.
28 //
29 Inisialisasi Komponen();
30 basis.OnInit(e);
31}
32
33 /**//// <ringkasan>
34 /// Desainer mendukung metode yang diperlukan - jangan gunakan editor kode untuk memodifikasi
35 /// Isi dari metode ini.
36 /// </ringkasan>
37 kekosongan pribadi InitializeComponent()
38 {
39 ini.Muat += Sistem baru.EventHandler(ini.Page_Load);
40
41 }
42 #wilayah akhir
43
44 kekosongan pribadi GetTeamMember(string AuditItemID)
45 {
46 senar strMaster, strTeamLeader, strPM;
47 ArrayList al = GetTeamMemberName(AuditItemID, keluar strMaster, keluar strTeamLeader, keluar strPM);
48
49 foreach(PersonRole pr di al)
50 {
51 Sel HtmlTableCell=HtmlTableCell baru();
52 sel.Align = "Tengah";
53 Label lbl = Label baru();
54 lbl.Teks = pr.nama;
55 lbl.Font.Ukuran = 9;
56
57 sel.Kontrol.Tambahkan(lbl);
58 Baris HtmlTableRow=HtmlTableRow baru();
59 baris.Sel.Tambahkan(sel);
60
61 HtmlTableCell cellRole = HtmlTableCell baru();
62 cellRole.Align = "Tengah";
63 Label lblRole = Label baru();
64 lblRole.Teks = pr.role;
65 lblPeran.Font.Ukuran = 9;
66
67 cellRole.Kontrol.Tambahkan(lblRole);
68 baris.Sel.Tambahkan(Peransel);
69
70 tblContainer.Rows.Add(baris);
71 }
72 }
73
74 Private ArrayList GetTeamMemberName(string AuditItemID, string keluar strMasterName, string keluar strTeamLeader, string keluar strPM)
75 {
76 Daftar Array al = Daftar Array baru();
77 strMasterName = "Tidak ada";
78 strTeamLeader = "Tidak ada";
79 strPM = "Tidak ada";
80
81 Peran Orang pr;
82 pr.nama = "Zhang San";
83 pr.role = "Manajer Umum";
84 al.Tambahkan(pr);
85
86 pr.nama = "李思";
87 pr.role = "Wakil Manajer Umum";
88 al.Tambahkan(pr);
89
90 pr.nama = "王五";
91 pr.role = "anggota bagian";
92 al.Tambahkan(pr);
93
94 pr.nama = "Zhao Liu";
95 pr.role = "anggota bagian";
96 al.Tambahkan(pr);
97
98 kembali al;
99 }
100}
Dalam menggambar sebuah halaman, cara mana yang sebaiknya digunakan adalah soal pendapat dan hikmah. Dalam pengembangan situs web, ketiga metode ini memiliki penerapan yang khas, terutama metode ketiga yang menurut saya sangat efektif dalam memecahkan masalah kinerja beberapa pemrosesan halaman. Selain itu, kontrol halaman tata letak dapat diotomatisasi, dan pemrosesan yang dipersonalisasi lebih mudah daripada menulis ulang Render di DataGrid.