#oracle #coldfusion #coldfusion-9
#Oracle #coldfusion #coldfusion-9
Вопрос:
Просто чтобы дать некоторую информацию. У нас есть пользователи в разных частях региона. Наше приложение отправляет отчеты по электронной почте, доступ к которым можно получить по URL. Таким образом, мы отслеживаем, кто обращался к отчету и различным другим атрибутам.
Теперь, как часть статистики, я пытаюсь отобразить атрибуты в HTML-таблице. У меня есть запрос, который содержит подробную информацию о «Названии региона», «Идентификаторе пользователя», «Имени отчета», «Количестве доступа», «Дате просмотра» и т.д. Требование заключается в том, чтобы охватывать «Название региона» по всем его строкам.
Например, 10 разных пользователей из региона Мельбурн имеют доступ к отчету XYZ. В моей таблице должен быть Melbourne с rowspan = «10» и в каждой строке должны быть сведения о каждом пользователе. Я не хочу, чтобы Мельбурн повторялся в таблице 10 раз.
Я пытался использовать <cfoutput group="RegionName"
тег вместе с таблицей HTML, но таблица не правильно сформирована.
Как я могу этого добиться?
Ответ №1:
Вы должны быть в состоянии достичь этого, и вы были в правильном направлении, посмотрев на атрибут groupby (на самом деле атрибут является group=""
). Хотя cfml будет выглядеть не очень красиво (я предпочитаю cfscript и, вероятно, сделал бы следующее с несколькими функциями). Что-то вроде следующего должно отображать правильно сформированную таблицу с ячейкой RegionName, охватывающей несколько строк, правильно сформированным образом, просто настройте классы / форматирование и т.д. По своему усмотрению!
<!---
Make sure that myQuery is ordered by
RegionName ASC before anything else to
ensure the group by works as intended
--->
<table>
<thead>
<tr>
<th>Region</th>
<th>User</th>
</tr>
</thead>
<tbody>
<cfoutput query="myQuery" group="RegionName">
<!--- set up an array to hold the users for this region --->
<cfset arrOfUsers = ArrayNew(1)>
<cfoutput>
<cfset ArrayAppend(arrOfUsers,'<td>'amp;myQuery.UserNameamp;'</td>)>
</cfoutput>
<!--- render time, use the array just generated so we know how many users are in this group --->
<cfloop from="1" to="#ArrayLen(arrOfUsers)#" index="i">
<tr>
<cfif i EQ 1>
<td rowspan="#ArrayLen(arrOfUsers)#">#myQuery.RegionName#</td>
</cfif>
#arrOfUsers[i]#
</tr>
</cfloop>
</cfoutput>
</tbody>
</table>
Комментарии:
1. Потрясающе, именно то, что я хотел. Большое спасибо, @simon.