2013-02-07 17 views
5

Tôi cần lấy lại vị trí chỉ mục của từng giá trị trong danh sách mà tôi có. Tôi đang làm điều này để tôi có thể hiển thị bảng gsp với màu nền của hàng xen kẽ. Ví dụ:Groovy/Grails - Cần truy xuất giá trị chỉ mục Danh sách

(list.indexVal % 2) == 1 ? 'odd' : 'even' 

Làm cách nào để có được số vị trí chỉ mục của từng mục trong danh sách Groovy? Cảm ơn!

Trả lời

9

According the documentation, g: mỗi thẻ trong giao diện GSP cho phép "trạng thái" biến nơi grails lưu trữ các chỉ số lần lặp trong Ví dụ:.

<tbody> 
    <g:each status="i" in="${itemList}" var="item"> 
    <!-- Alternate CSS classes for the rows. --> 
    <tr class="${ (i % 2) == 0 ? 'a' : 'b'}"> 
     <td>${item.id?.encodeAsHTML()}</td> 
     <td>${item.parentId?.encodeAsHTML()}</td> 
     <td>${item.type?.encodeAsHTML()}</td> 
     <td>${item.status?.encodeAsHTML()}</td> 
    </tr> 
    </g:each> 
</tbody> 
+0

Đó làm việc, nhờ một triệu! – grantmcconnaughey

+0

Phản hồi này rất hữu ích vì nó chỉ ra sự tồn tại của tính năng 'trạng thái' trong

2

Bất cứ g:each, eachWithIndex, hoặc for vòng có thể được dùng.

Nhưng, đối với trường hợp cụ thể này, giá trị chỉ mục không cần thiết. Sử dụng css pseudo-classes được đề nghị:

tr:nth-child(odd) { background: #f7f7f7; } 
tr:nth-child(even) { background: #ffffff; } 

Nếu bạn vẫn cần để có được chỉ số, tùy chọn là:

<g:each status="i" in="${items}" var="item"> 
    ... 
</g:each> 

<% items.eachWithIndex { item, i -> %> 
    ... 
<% } %> 

<% for (int i = 0; i < items.size(); i++) { %> 
    <% def item = items[i] %> 
    ... 
<% } %> 
Các vấn đề liên quan