Как придать разные цвета набору строк в таблице gsp в зависимости от значений в полях?

#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?