2012-02-06 19 views
5

Tek bir satırda bir dataTable öğesine geri gönderilebilecek şekilde daha fazla veriye sahip olduğum bir durum var. Bununla başa çıkmak için sonuçları tek bir hücrede birleştirdim. Aradığım şey, sonuç kümesindeki son nesneye ulaşıp ulaşmadığımı belirlemenin bir yoludur, böylelikle ayırıcım olarak kullanılan alt sınırı bırakabilirim. Nihayetinde, kaç tane nesne ile uğraşacağımı bilmiyorum.jsf veri tabanındaki son kaydı şekillendirme

.most { 
    background-color:cyan; 
    border-bottom:medium solid black; 
} 
.last { 
    border-bottom:none; 
} 

<h:dataTable id="myTable" value="#{flowData.selectedItem.profile}" var="profile" columnClasses="most, last"> 
<h:column> 
    <h:inputText id="_last" value="#{profile.last}" /> 
    <h:inputText id="_first" value="#{profile.first}" /> 
    <h:inputText id="_middle" value="#{profile.middle}" /> 
    <h:inputText id="_city" value="#{profile.city}" /> 
    <h:inputText id="_state" value="#{profile.state}" /> 
</h:column> 
</h:dataTable> 

Herhangi bir giriş için şimdiden teşekkür ederiz.

cevap

2

Bu, desteklemek istediğiniz IE tarayıcı sürümüne bağlıdır.

IE6/7 desteğini umursamıyorsanız, bunun için CSS2 :last-child pseudoclass'ı kullanabilirsiniz. ,

<h:dataTable ... styleClass="yourTableClass"> 
ile

table.yourTableClass tbody tr td { 
    background-color: cyan; 
    border-bottom: medium solid black; 
} 
table.yourTableClass tbody tr:last-child td { 
    border-bottom: none; 
} 

(evet, IE7 CSS2 pseudoclass meslektaşı :first-child destekler, ama gerçekten değil:last-child! Desteklemiyor) Eğer IE7 önem veriyorsan

ama IE6 hakkında değil, o zamanyerine border-top ile başka bir şekilde yuvarlak yapabilirsiniz :first-child üzerinde none olarak ayarlanır:

table.yourTableClass tbody tr td { 
    background-color: cyan; 
    border-top: medium solid black; 
} 
table.yourTableClass tbody tr:first-child td { 
    border-top: none; 
} 

sen ancak aynı zamanda, o zaman satır sınıfların dize üreten etrafında gidemez kendinizi içeride (discutable bu gündür) IE6 önem veriyorsanız (değil kolon sınıflar!) yönetilen fasulye.

public String getRowClasses() { 
    StringBuilder builder = new StringBuilder(); 
    int size = selectedItem.getProfile().size(); // getProfiles() ? 

    for (int i = 0; i < size; i++) { 
     builder.append((i + 1 < size) ? "most," : "last"); 
    } 

    return builder.toString(); 
} 

ve bu CSS

tr.more td { 
    background-color: cyan; 
    border-bottom: medium solid black; 
} 
tr.last td { 
    border-bottom: none; 
} 
+0

ile

<h:dataTable ... rowClasses="#{flowData.rowClasses}"> 

bu bir mücadele için çeşitli yollar senin mükemmel açıklama için teşekkür ederiz. Sonunda fasulye gelen rowClasses üretmek için tercih etti. Bir çekicilik gibi çalışır. – Corpse