При разработке проектов сайтов 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-COLLAPS: свернуть; ВЫСОТА: 10 пикселей">
2 <тр>
3 <td align="center">
4 <TABLE id="tblContainer" class="MsoNormalTable" style="WIDTH: 380px; BORDER-COLLAPSE: свернуть; ВЫСОТА: 10px"
5 cellSpacing="0" cellPadding="6" border="1" runat="server" bordercolor="#99cccc">
6 <тр>
7 <td colspan="2" align="center">
8 <P><FONT size="3"><STRONG><FONT face="宋体">Должности персонала отдела общего управления</FONT></STRONG></FONT></P>
9 </td>
10 </tr>
11 <тр>
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 </тд>
17 </tr>
18 </таблица>
Непосредственно используйте метод Add веб-элементов управления ASP.NET, чтобы добавить метку в ячейку 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 Private void Page_Load (отправитель объекта, System.EventArgs e)
13 {
14 //Поместите сюда пользовательский код для инициализации страницы
15 if(Request.QueryString["AuditItemID"] != ноль)
16 {
17 strAuditItemID = Request.QueryString["AuditItemID"].ToString();
18}
19
20 GetTeamMember(strAuditItemID);
двадцать один }
двадцать два
23 Код, созданный конструктором веб-форм#регион Код, созданный конструктором веб-форм
24 переопределить защищенную пустоту OnInit (EventArgs e)
25 {
26 //
27 // CODEGEN: этот вызов необходим разработчику веб-форм ASP.NET.
28 //
29 ИнициализироватьКомпонент();
30 base.OnInit(e);
31}
32
33 /**//// <краткое содержание>
34 /// Конструктор поддерживает необходимые методы — не используйте редактор кода для изменения
35 /// Содержимое этого метода.
36 /// </summary>
37 частная пустота InitializeComponent()
38 {
39 this.Load += новый System.EventHandler(this.Page_Load);
40
41 }
42 #конечныйрегион
43
44 Private void 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 = новая HtmlTableCell();
52 cell.Align = "Центр";
53 Метка lbl = новая метка();
54 фунтов.Текст = пр.имя;
55 фунтов. Шрифт. Размер = 9;
56
57 ячеек.Controls.Add(lbl);
58 HtmlTableRow row = новый 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 row.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 др.Добавить(пр);
85
86 pr.name = "李思";
87 pr.role = "Заместитель генерального директора";
88 др.Добавить(пр);
89
90 пр.имя = "王五";
91 pr.role = "участник раздела";
92 др.Добавить(пр);
93
94 пр.имя = "Чжао Лю";
95 pr.role = "участник раздела";
96 др.Добавить(пр);
97
98 возврат аль;
99 }
100}
Какой метод следует использовать при рисовании страницы — это вопрос мнения и мудрости. При разработке веб-сайтов эти три метода имеют типичные применения, особенно третий метод, который, как я обнаружил, очень эффективен при решении проблем с производительностью обработки некоторых страниц. Более того, управление страницами макета можно автоматизировать, а персонализировать обработку проще, чем переписывать Render в DataGrid.