#grails #colors #gsp
#grails #Цвет #gsp
Вопрос:
У меня есть таблица gsp, и я заполняю значения в ее полях из коллекции, переданной от контроллера, используя каждый тег gsp для каждой строки. Теперь я хочу, чтобы строки, которые получают одинаковое значение для поля billId, отображались другим цветом. Как это сделать?
Комментарии:
1. Пожалуйста, опубликуйте свой существующий код
Ответ №1:
Попробуйте следующее:
<g:each in="${billings}" status="i" var="billing">
<set var="cssClass" value"${(billing.id % 2) == 0 ? 'odd' : 'even'}"/>
<g:each in="${billing.rows}" status="i" var="row">
<span class="${cssClass}">${row.id}</span>
</g:each>
</g:each>
для каждого четного и нечетного платежного идентификатора вы определяете другой стиль css. в вашем основном css-файле вы должны определить класс even и odd, например, с цветом фона. не знаю, как выглядит ваша выводимая структура, поэтому создал пример кода.
Комментарии:
1. Спасибо, что сработало.. это выглядит неплохо, но будет лучше, если я присвою первому набору строк с одинаковым идентификатором счета тот же цвет, а следующему набору с одинаковым идентификатором счета другой цвет. я хочу чередовать два цвета между строками с одинаковыми идентификаторами счетов .. как я могу это сделать.
2. удобнее подготовить ваши данные в вашем контроллере, а затем передать их в ваш gsp. в контроллере вы можете использовать вспомогательный класс для хранения платежной информации и соответствующего цвета. вы можете проверить, существует ли более одного счета с одинаковым идентификатором, и изменить цвет на основе, например, непрерывного числа в пределах одних и тех же счетов.
Ответ №2:
Хотя может показаться хорошей идеей отображать строки таблицы с одинаковым значением billId одним и тем же цветом, это может оказаться непрактичным. Например, если у вас есть 100 разных значений поля billId, вам нужно будет найти 100 разных цветов для использования в строках вашей таблицы, и каждый из этих цветов должен будет хорошо сочетаться с цветом фона / текста таблицы.
Даже если вы каким-то образом сможете найти достаточное количество цветов, ваша таблица, скорее всего, в конечном итоге будет выглядеть как взрыв на заводе по производству красок.
Более простым / лучшим решением может быть использование onclick
события row для выделения красным всех строк (например), которые имеют то же значение billId, что и выбранная строка. Для этого вам нужно будет использовать JavaScript.
Обновить
В приведенном ниже комментарии объясняется, что вы просто хотите чередовать цвета через каждые 5 строк. Попробуйте это:
<table>
<g:each in="${billings}" status="i" var="billing">
<tr class="${i % 10 < 5 ? 'rows1' : 'rows2'}">
<td>${billing.id}</td>
<!-- Add other <tds> here -->
</tr>
</g:each>
</table>
В CSS вам нужно будет создать классы с именами rows1
и rows2
, которые определяют стили строк
Комментарии:
1. У меня нет 100 полных строк. всего 5 строк для каждого идентификатора счета, и я хочу использовать только 2 цвета. первые пять с одним цветом, а остальные пять с другим. как я могу это сделать
Ответ №3:
Попробуй
<g:each in="${billings}" status="i" var="billing">
<set var="cssClass" value"${i < (billings.size()/2) ? 'class1' : 'class2'}"/>
<g:each in="${billing.rows}" status="i" var="row">
<span class="${cssClass}">${row.id}</span>
</g:each>
</g:each>
Комментарии:
1. вы только что скопировали это из hitty5?