ในการพัฒนาโครงการไซต์ ASP.NET ข้อมูลมักจะแสดงในรูปแบบตาราง วิธีที่ใช้กันมากที่สุดน่าจะเป็นวิธีที่ DataGrid ผูกข้อมูลชุดข้อมูล ในโครงการซอฟต์แวร์ที่ผมทำ มีสามวิธีทั่วไปในการประมวลผลข้อมูลแบบตาราง
1. DataGrid ผูกแหล่งข้อมูล วิธีนี้ถูกใช้มากที่สุด แต่วิธีการรวมที่สมบูรณ์แบบระหว่าง DataGrid และ ADO.NET ยังคงน่ารำคาญ รูปแบบ DataGrid ที่เหมือนกันนั้นยากต่อการปรับให้เข้ากับสไตล์พิเศษของโปรเจ็กต์ต่างๆ และการปรับแต่ง DataGrid ในแบบของคุณนั้นจะยุ่งยากมาก
2. ใช้ XML (ข้อมูล) + XSL (สไตล์ชีต) ดังที่คุณทราบ กลไกการใช้งานของการผูก DataSet กับ DataGrid ไม่มีอะไรมากไปกว่านี้ ดังที่แสดงในภาพ เพื่อนำตารางดังกล่าวไปใช้ นักพัฒนาสามารถออกแบบสไตล์ XSL ได้มากเท่าที่ต้องการ
3. วาดข้อมูลโดยตรงไปยัง HTML วิธีการนี้ค่อนข้างหยาบ แต่บางครั้งก็มีประสิทธิภาพมาก ลองดูที่โค้ดการใช้งานก่อน รหัสต่อไปนี้ใช้ตารางที่แสดงในรูปด้านบน
1<table style="WIDTH: 100%; BORDER-COLLAPSE:ยุบ; HEIGHT: 10px">
2 <tr>
3 <td align="center">
4 <TABLE id="tblContainer" class="MsoNormalTable" style="WIDTH: 380px; BORDER-COLLAPSE: ยุบ; HEIGHT: 10px"
5 cellSpacing="0" cellPadding="6" border="1" runat="server" bordercolor="#99cccc">
6 <tr>
7 <td colspan="2" align="center">
8 <P><FONT size="3"><STRONG><FONT face="宋体">ตำแหน่งบุคลากรแผนกการจัดการทั่วไป</FONT></STRONG></FONT></P>
9 </td>
10 </tr>
11 <tr>
12 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>ชื่อบุคคล</STRONG></FONT></td>
13 <td align="center" bgcolor="#003399"><FONT size="2" color="#ffffff"><STRONG>ตำแหน่งแผนก</STRONG></FONT></td>
14 </tr>
15 </ตาราง>
16 </td>
17 </tr>
18 </ตาราง>
ใช้วิธีการเพิ่มของ ASP.NET WebControls โดยตรงเพื่อเพิ่มป้ายกำกับลงในเซลล์ HTML
1คลาสสาธารณะ WebForm2 : System.Web.UI.Page
2 {
3
4 โครงสร้างบุคคลบทบาท
5 {
6 ชื่อสตริงสาธารณะ;
7 บทบาทสตริงสาธารณะ;
8}
9
10 ป้องกัน System.Web.UI.HtmlControls.HtmlTable tblContainer;
11 สตริงสาธารณะ strAuditItemID = "A899B637-AC47-42EB-9B61-A61C9C880DDC";
12 โมฆะส่วนตัว Page_Load (ผู้ส่งวัตถุ System.EventArgs e)
13 {
14 //ใส่รหัสผู้ใช้ที่นี่เพื่อเริ่มต้นเพจ
15 ถ้า (Request.QueryString["AuditItemID"] != null)
16 {
17 strAuditItemID = Request.QueryString["AuditItemID"].ToString();
18}
19
20 GetTeamMember (strAuditItemID);
ยี่สิบเอ็ด }
ยี่สิบสอง
23 รหัสที่สร้างโดย Web Forms Designer#region รหัสที่สร้างโดย Web Forms Designer
24 แทนที่การป้องกันโมฆะ OnInit (EventArgs e)
25 {
26 //
27 // CODEGEN: การเรียกนี้จำเป็นโดยผู้ออกแบบ ASP.NET Web Forms
28 //
29 เตรียมใช้งานส่วนประกอบ();
30 ฐาน OnInit(e);
31}
32
33 /***//// <สรุป>
34 /// Designer รองรับวิธีการที่จำเป็น - อย่าใช้โปรแกรมแก้ไขโค้ดเพื่อแก้ไข
35 /// เนื้อหาของวิธีนี้
36 /// </สรุป>
37 โมฆะส่วนตัว InitializeComponent()
38 {
39 this.Load += ใหม่ System.EventHandler(this.Page_Load);
40
41 }
42#endregion
43
44 GetTeamMember เป็นโมฆะส่วนตัว (สตริง AuditItemID)
45 {
46 สตริง strMaster, strTeamLeader, strPM;
47 ArrayList al = GetTeamMemberName(AuditItemID, ออก strMaster, ออก strTeamLeader, ออก strPM);
48
49 หน้า(PersonRole pr ใน al)
50 {
51 เซลล์ HtmlTableCell=เซลล์ HtmlTableCell();
52 เซลล์ Align = "กึ่งกลาง";
53 ป้ายกำกับ lbl = ป้ายกำกับใหม่ ();
54 lbl.Text = pr.name;
55 ปอนด์ ขนาดตัวอักษร = 9;
56
57 เซลล์ ควบคุม เพิ่ม(lbl);
58 แถว HtmlTableRow=ใหม่ HtmlTableRow();
59 แถวเซลล์เพิ่ม(เซลล์);
60
61 HtmlTableCell cellRole = ใหม่ HtmlTableCell();
62 cellRole.Align = "กึ่งกลาง";
63 ป้ายกำกับ lblRole = ป้ายกำกับใหม่ ();
64 lblRole.Text = pr.role;
65 lblRole.Font.Size = 9;
66
67 cellRole.Controls.Add(lblRole);
68 แถว Cells.Add(cellRole);
69
70 tblContainer.Rows.Add(แถว);
71 }
72 }
73
74 ArrayList GetTeamMemberName ส่วนตัว (สตริง AuditItemID, สตริงออก strMasterName, สตริงออก strTeamLeader, สตริงออก strPM)
75 {
76 ArrayList al = ใหม่ ArrayList();
77 strMasterName = "ไม่มี";
78 strTeamLeader = "ไม่มี";
79 strPM = "ไม่มี";
80
81 บทบาทบุคคล ประชาสัมพันธ์;
82 ชื่อ = "จางซาน";
83 pr.role = "ผู้จัดการทั่วไป";
84 อัล.เพิ่ม(pr);
85
86 pr.name = "李思";
87 pr.role = "รองผู้จัดการทั่วไป";
88 อัล.เพิ่ม(pr);
89
90 ชื่อ = "王五";
91 pr.role = "สมาชิกส่วน";
92 อัล.เพิ่ม(pr);
93
94 pr.name = "จ้าวหลิว";
95 pr.role = "สมาชิกส่วน";
96 อัล.เพิ่ม(pr);
97
98 กลับอัล;
99 }
100}
เมื่อวาดเพจควรใช้วิธีใดเป็นเรื่องของความคิดเห็นและภูมิปัญญา ในการพัฒนาเว็บไซต์ ทั้งสามวิธีนี้มีแอปพลิเคชันทั่วไป โดยเฉพาะวิธีที่ 3 ฉันพบว่ามีประสิทธิภาพมากในการแก้ปัญหาประสิทธิภาพของการประมวลผลหน้าบางหน้า นอกจากนี้ การควบคุมหน้าเลย์เอาต์ยังเป็นไปโดยอัตโนมัติ และการประมวลผลส่วนบุคคลยังง่ายกว่าการเขียน Render ใหม่ใน DataGrid