ASP.NET 사이트 프로젝트를 개발할 때 데이터가 표 형식으로 표시되는 경우가 많습니다. 가장 일반적으로 사용되는 방법은 아마도 DataGrid가 DataSet 데이터를 바인딩하는 방식일 것입니다. 제가 작업한 소프트웨어 프로젝트에는 표 형식 데이터를 처리하는 세 가지 일반적인 방법이 있습니다.
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="중앙">
4 <TABLE id="tblContainer" class="MsoNormalTable" style="WIDTH: 380px; BORDER-COLLAPSE: 붕괴; HEIGHT: 10px"
5 cellSpacing="0" cellPadding="6" border="1" runat="서버" 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의 Add 메서드를 직접 사용하여 HTML 셀에 레이블을 추가합니다.
1공용 클래스 WebForm2 : System.Web.UI.Page
2 {
3
4 구조체 PersonRole
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 if(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 재정의 보호된 void OnInit(EventArgs e)
25 {
26 //
27 // CODEGEN: 이 호출은 ASP.NET Web Forms 디자이너에 필요합니다.
28 //
29 초기화구성요소();
30 베이스.OnInit(e);
31}
32
33 /**//// <요약>
34 /// 디자이너는 필수 메서드를 지원합니다. 코드 편집기를 사용하여 수정하지 마세요.
35 /// 이 메소드의 내용입니다.
36 /// </summary>
37 개인 무효 초기화 구성 요소()
38 {
39 this.Load += new System.EventHandler(this.Page_Load);
40
41 }
42 #끝지역
43
44 개인 무효 GetTeamMember(문자열 AuditItemID)
45 {
46 문자열 strMaster, strTeamLeader, strPM;
47 ArrayList al = GetTeamMemberName(AuditItemID, out strMaster, out strTeamLeader, out strPM);
48
49 foreach(PersonRole 홍보)
50 {
51 HtmlTableCell 셀=new HtmlTableCell();
52 cell.Align = "가운데";
53 라벨 lbl = new Label();
54 lbl.Text = pr.이름;
55lbl.Font.Size = 9;
56
57 셀.컨트롤.추가(lbl);
58 HtmlTableRow 행=new HtmlTableRow();
59 행.Cells.Add(cell);
60
61 HtmlTableCell cellRole = new HtmlTableCell();
62 cellRole.Align = "가운데";
63 라벨 lblRole = new Label();
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(row);
71 }
72 }
73
74 개인 ArrayList GetTeamMemberName(문자열 AuditItemID, 출력 문자열 strMasterName, 출력 문자열 strTeamLeader, 출력 문자열 strPM)
75 {
76 ArrayList al = new ArrayList();
77 strMasterName = "없음";
78 strTeamLeader = "없음";
79 strPM = "없음";
80
81 개인역할 pr;
82 pr.name = "장산";
83 pr.role = "총괄 관리자";
84 al.추가(pr);
85
86 pr.name = "이혜";
87 pr.role = "차장";
88 al.추가(pr);
89
90 pr.name = "왕오";
91 pr.role = "섹션 구성원";
92 al.추가(pr);
93
94 pr.name = "조류";
95 pr.role = "섹션 구성원";
96 al.추가(pr);
97
98 반환 알;
99 }
100}
페이지를 그릴 때 어떤 방법을 사용해야 하는지는 의견과 지혜의 문제입니다. 웹 사이트 개발에서 이 세 가지 방법은 일반적인 응용 프로그램을 가지고 있으며, 특히 세 번째 방법은 일부 페이지 처리의 성능 문제를 해결하는 데 매우 효과적이라는 것을 알았습니다. 또한 레이아웃 페이지 컨트롤을 자동화할 수 있으며 DataGrid에서 Render를 다시 작성하는 것보다 개인화된 처리가 더 쉽습니다.