2011-02-25 16 views
12

में सेल सामग्री को सही संरेखित करना मैं आउटपुट टेक्स्ट मान (यानी शुल्क। नीचे योग्यता नीचे) को संरेखित करना चाहता हूं और मैं उस कॉलम के लिए शीर्षलेख रखना चाहता हूं। इसे प्राप्त करने के लिए मुझे आउटपुट टेक्स्ट को पास करने के लिए क्या पैरामीटर देना है?एक डेटाटेबल कॉलम

<h:dataTable> 
    ... 
    (other columns) 
    ... 
    <h:column headerClass="columnCenter"> 
     <f:facet id="header_agency" name="header"> 
      <h:outputText value="Amount"/> 
     </f:facet> 
     <h:outputText value="#{fee.tableAmount}"> 
      <f:convertNumber maxFractionDigits="2" groupingUsed="true" 
       currencySymbol="$" type="currency" /> 
     </h:outputText> 
    </h:column> 
</h:dataTable> 

उत्तर

18

आप उसी कॉलम की सभी कोशिकाओं पर सीएसएस कक्षाओं को निर्दिष्ट करने के लिए <h:dataTable> की columnClasses विशेषता का उपयोग कर सकते हैं। आप कक्षा के नामों की एक अल्पसंख्यक स्ट्रिंग पास कर सकते हैं।

<h:dataTable columnClasses="column1,column2,column3"> 

ऊपर दूसरे और इतने पर के लिए प्रथम स्तंभ के लिए <td class="column1">, <td class="column2"> बना देता है। यह आपको शैलियों को बाहरी और सामान्य बनाने की अनुमति देता है।

कल्पना कीजिए कि आप 4 कॉलम और प्रथम, द्वितीय और चौथे स्तंभ एक विशेष शैली और केवल तीसरे स्तंभ दाएँ संरेखित होने की जरूरत है कि है की जरूरत नहीं है, तो

<h:dataTable columnClasses="none,none,right,none"> 

करना

td.right { 
    text-align: right; 
} 

के साथ संयोजन जो शब्दार्थ अधिक सही है और एक float: right; से तकनीकी रूप से अधिक मजबूत है में।

+1

यह सच है, लेकिन अजीब तरह से ' के लिए पर्याप्त ...' तालिका हेडर ऐसा लगता है एक ही वर्ग निर्दिष्ट कर सकते हैं [में '' बजाय] (http: //docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/h/column.html)। तो: कॉलम * डेटा * के लिए सीएसएस कक्षाएं < 'ऊपर वर्णित की गई हैं, और प्रत्येक से कॉलम * हेडर * के लिए सीएसएस '<एच: कॉलम हेडर क्लास =" ... ">'। – Arjan

+1

@ अरजन: [''] (http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/h/dataTable.html) में 'हेडर क्लास' विशेषता भी है। उपरोक्त टैग दस्तावेज के "शीर्षलेख प्रस्तुत करना" अनुभाग भी देखें। – BalusC

+1

हां, लेकिन यह सभी कॉलम हेडर पर लागू होता है, और एक विशिष्ट कॉलम के लिए एक विशिष्ट वर्ग के लिए अल्पविराम से अलग सूची नहीं है, [है] [http://docs.oracle।com/सीडी/E17802_01/J2EE/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/एच/dataTable.html)? – Arjan

0

मैंने अभी भी किसी और के लिए शैली = "फ्लोट: दाएं" जोड़ा है।

<h:outputText style="float:right" value="#{fee.tableAmount}"> 
    ... 
</h:outputText> 
2

आप ने कहा, यदि आप अपने <h:outputText> पर सीधे एक float: right परिभाषित करते हैं, इस तरह के रूप में:

<h:outputText style="float: right;" value="#{fee.tableAmount}"/> 

तो यह घोंसला एक <span> में अपना पाठ है कि तब सही करने के लिए ले जाया जाएगा होगा।

दुर्भाग्य से, <h:column> घटक कॉलम के सीएसएस वर्ग को निर्दिष्ट करने का कोई तरीका प्रदान नहीं करता है। हालांकि, मामले में आप किसी अन्य घटक अपनी मेज के लिए है यह निर्दिष्ट करने के लिए प्रयोग कर रहे हैं, Richfaces <rich:column>, वहाँ एक और समाधान है जैसे: पहली बार, एक CSS वर्ग सेट:

.textOnRight { 
    text-align: right; 
} 

फिर, इस CSS वर्ग आवंटित अपने स्तंभ: क्योंकि यह विशेषता इस घटक के द्वारा नियंत्रित नहीं है

<rich:column styleClass="textOnRight" headerClass="columnCenter"> 
    <f:facet name="header"> 
     <h:outputText value="Amount"/> 
    </f:facet> 
    <h:outputText value="#{fee.tableAmount}"> 
     <f:convertNumber maxFractionDigits="2" groupingUsed="true" 
      currencySymbol="$" type="currency" /> 
    </h:outputText> 
</rich:column> 

वैसे, अपने <f:facet> में एक id की स्थापना, कुछ नहीं करता है।

संबंधित मुद्दे