2010-12-10 5 views

답변

4

rowClasses 속성을 원하는 CSS 문자열 문자열을 반환하는 bean 속성에 바인딩하십시오.

<h:dataTable value="#{bean.list}" rowClasses="#{bean.rowClasses}"> 

public String getRowClasses() { 
    StringBuilder rowClasses = new StringBuilder(); 
    for (Item item : list) { 
     if (rowClasses.length() > 0) rowClasses.append(","); 
     rowClasses.append(item.getRowClass()); 
    } 
    return rowClasses.toString(); 
} 

업데이트, 당신은 rowClasses 캐릭터를 완벽하게 프로그래밍 제어 할 수 있습니다이 방법을 명확히한다. 위의 내용은 단지 킥오프 예제 일 뿐이며 반드시 Item#getRowClass() 정도가 필요하지는 않습니다. 카운터를 사용하여 간단한 for 루프에서 수행 할 수도 있습니다.

예. selectedList<Integer>입니다

public String getRowClasses() { 
    StringBuilder rowClasses = new StringBuilder(); 
    for (int i = 0; i < list.size(); i++) { 
     if (rowClasses.length() > 0) rowClasses.append(","); 
     rowClasses.append(selected.contains(i) ? "selected" : "none"); 
    } 
    return rowClasses.toString(); 
} 

. 은 1, 2, 5를 포함하면, 반환 된 문자열은 10 개 항목의 목록은 다음과 같이 표시됩니다

none,selected,selected,none,none,selected,none,none,none,none 
+0

당신에게 BalusC 감사 이런 식으로 작업을 수행 할 수 있습니다,하지만 난 하나의 특정 행에 특정 클래스를 지정 의미 : 예를 들어, CSS 클래스 "redRow"를 3 행에 할당하십시오. rowClasses는 모든 행에 대해 반복 스키마를 지정할 수있게 해줍니다. –

+1

3 번째 항목이'getRowClass()'에'redRow'를 리턴하도록합니다. 또는 카운터를 사용하고 세 번째 항목에'redRow'를 추가하십시오. 어쨌든 주어진 답변의 요점을 이해합니까? – BalusC

+0

감사합니다, BalusC. 알았어. –

0

내가 @BalusC 제안을 좋아한다. 두 번째 대안을 원하면 javascript/JQuery를 사용하면 쉽게이 작업을 수행 할 수 있습니다. jQuery로

당신은

(Note, this is just an example. I haven't tested it, and there is probably a better way of doing it)

$(document).ready(function(){ 
    var counter = 0; 
    $('#myTable').each(function() { 
     counter = counter + 1; 
     if(counter==3) { 
     $(this).addClass('redRow'); 
     return; 
     } 

    }); 
} 
+0

그냥'$ ('# myTable tbody tr : eq (2)'). addClass ('redRow')'도 가능합니다. – BalusC