2012-04-09 15 views
5

मैंने हेडर में तीन टेक्स्ट फ़ील्ड बनाए हैं। मैंने सभी textField तत्वों में पैरामीटर डाला है। जब मैं तीन textField तत्वों के तीन पैरामीटर में से एक को कॉल नहीं कर रहा हूं। यह 2 textField तत्व दिखाएगा। अब समस्या यह है कि टेक्स्ट फ़ील्ड के बीच जगह है।जैस्पर रीपॉर्ट्स में टेक्स्टफील्ड के बीच अतिरिक्त जगह कैसे निकालें?

अंतरिक्ष को कैसे निकालें?

<textField isBlankWhenNull="true"> 
    <reportElement x="0" y="18" width="555" height="35" isRemoveLineWhenBlank="true"/> 
    <textElement textAlignment="Center"> 
     <font size="12"/> 
    </textElement> 
    <textFieldExpression><![CDATA[$P{daterangefrom} && $P{daterangeto} ? "From (" + $P{daterangefrom} + " - " + $P{daterangeto} + ")" 
: $P{weeks} && $P{monthy} && $P{yrs} ? "For week " + $P{weeks} +" "+ $P{monthy} +" "+ $P{yrs} 
: $P{monthy} && $P{yrs} ? "For monthly " +$P{monthy} +" "+ $P{yrs} 
: $P{quarter} && $P{yrs} ? "For Quarter " + $P{quarter} +" "+$P{yrs} 
: $P{yrs} ? "For " + $P{yrs} 
: null]]> 
    </textFieldExpression> 
</textField> 

यह मेरा परिणाम है::

यह मेरा कोड है

enter image description here

+0

आप एक 'टेक्स्ट फ़ील्ड' का उपयोग कर सकते हैं। आप किस तरह के फ़ील्ड प्लेसमेंट का उपयोग कर रहे हैं (लंबवत या क्षैतिज)? –

+0

मैं वर्टिकल का उपयोग करता हूं। कल, मैं एक टेक्स्टफील्ड में गठबंधन का उपयोग कर रहा हूं और मैंने डबल लाइन डाली है। जब तीन में से कोई नहीं दिखाता है। यह 2 टेक्स्टफील्ड दिखाएगा। लेकिन टेक्स्टफील्ड में जगह है। अंतरिक्ष को कैसे हटाया जाए ताकि रिपोर्ट अधिक संरचित प्रदर्शित हो सके? –

उत्तर

14

आप isRemoveLineWhenBlank संपत्ति true मान पर सेट के साथ 3 textField तत्वों का उपयोग कर सकते हैं।

नमूना (jrxml फ़ाइल):

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport .. topMargin="0" bottomMargin="0"> 
    <parameter name="parameter1" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="parameter2" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="parameter3" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <title> 
     <band height="102" splitType="Stretch"> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="163" y="9" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{parameter1} == null ? null : "Parameter1: " + $P{parameter1}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="163" y="29" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{parameter2} == null ? null : "Parameter2: " + $P{parameter2}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="163" y="49" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{parameter3} == null ? null : "Parameter3: " + $P{parameter3}]]></textFieldExpression> 
      </textField> 
      <staticText> 
       <reportElement x="163" y="73" width="100" height="20"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <text><![CDATA[Static text]]></text> 
      </staticText> 
      <line> 
       <reportElement x="63" y="6" width="447" height="1"/> 
      </line> 
      <line> 
       <reportElement x="73" y="96" width="447" height="1"/> 
      </line> 
     </band> 
    </title> 
</jasperReport> 

iReport में रिपोर्ट डिजाइन: Report's design in iReport

लिए parameter1 = अशक्त, parameter2 = अशक्त, parameter1 = VALUE3 परिणाम हो जाएगा: The result in iReport (preview mode)

अद्यतन

ऊपर तत्व मामले में textField ऊपर जा रहा है की समस्या को हल करने के लिए छिपाने था आप Frame कंटेनर का उपयोग कर सकते हैं।आपको 2 फ्रेम (प्रति कॉलम एक) जोड़ना चाहिए और प्रत्येक फ्रेम में 2 textField तत्व (2 पंक्तियां) डालना चाहिए।

नमूना (jrxml फ़ाइल):

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport .. topMargin="0" bottomMargin="0"> 
    <parameter name="par1" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="par2" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="par3" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="par4" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <title> 
     <band height="80" splitType="Stretch"> 
      <line> 
       <reportElement x="10" y="6" width="520" height="1"/> 
      </line> 
      <line> 
       <reportElement x="10" y="72" width="520" height="1"/> 
      </line> 
      <frame> 
       <reportElement x="329" y="10" width="172" height="59"/> 
       <frame> 
        <reportElement x="13" y="3" width="60" height="54"/> 
        <textField isBlankWhenNull="true"> 
         <reportElement x="1" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/> 
         <box> 
          <topPen lineWidth="1.0"/> 
          <leftPen lineWidth="1.0"/> 
          <bottomPen lineWidth="1.0"/> 
          <rightPen lineWidth="1.0"/> 
         </box> 
         <textElement/> 
         <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression> 
        </textField> 
        <textField isBlankWhenNull="true"> 
         <reportElement x="1" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/> 
         <box> 
          <topPen lineWidth="1.0"/> 
          <leftPen lineWidth="1.0"/> 
          <bottomPen lineWidth="1.0"/> 
          <rightPen lineWidth="1.0"/> 
         </box> 
         <textElement/> 
         <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression> 
        </textField> 
       </frame> 
       <frame> 
        <reportElement x="73" y="3" width="70" height="54"/> 
        <textField isBlankWhenNull="true"> 
         <reportElement x="1" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/> 
         <box> 
          <topPen lineWidth="1.0"/> 
          <leftPen lineWidth="1.0"/> 
          <bottomPen lineWidth="1.0"/> 
          <rightPen lineWidth="1.0"/> 
         </box> 
         <textElement/> 
         <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression> 
        </textField> 
        <textField isBlankWhenNull="true"> 
         <reportElement x="1" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/> 
         <box> 
          <topPen lineWidth="1.0"/> 
          <leftPen lineWidth="1.0"/> 
          <bottomPen lineWidth="1.0"/> 
          <rightPen lineWidth="1.0"/> 
         </box> 
         <textElement/> 
         <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression> 
        </textField> 
       </frame> 
      </frame> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="10" y="30" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="10" y="10" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="64" y="10" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="64" y="30" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression> 
      </textField> 
     </band> 
    </title> 
</jasperReport> 

iReport में रिपोर्ट डिजाइन: The design in iReport. Two cases

par1 = अशक्त, par2 = 2, Par3 = 3, par4 = 4 के लिए परिणाम होगा: The result in iReport preview. Two cases

आप परिणामों की तुलना कर सकते हैं - बाएं तरफका उपयोग किए बिना किया जाता है 0 और दाएं तरफ frame तत्वों के साथ।

+0

@Amin बस रिपोर्ट के डिज़ाइन स्क्रीनशॉट को जोड़ा गया –

+0

धन्यवाद @ एलेक्स के। लेकिन मेरे पास एक और सवाल है, अगर मैं कुल 4 टेक्स्टफिल्ल्ड डालता हूं। मैंने पंक्ति 1 पर लाइन 1 और 2 टेक्स्टफील्ड पर 2 टेक्स्टफील्ड लगाया है। यदि लाइन 1 में एक टेक्स्टफील्ड को हटाया जाए तो स्पेस को कैसे हटाया जाए? –

+1

उदाहरण के लिए आपकी पहली पंक्ति में 'txtFieldName1' और' txtFieldValue1' और 'txtFieldName2' और' txtFieldValue2' दूसरी पंक्ति (रेखा) पर है। यदि 'txtFieldName1' तत्व की अभिव्यक्ति शून्य है, तो क्या आप दोनों तत्वों (' txtFieldName1' और 'txtFieldValue1') को छिपाना चाहते हैं और इस मामले में केवल एक पंक्ति (' txtFieldName2' और 'txtFieldValue2' तत्वों के साथ) दिखाएं या आप चाहते हैं पहली पंक्ति में 'txtFieldName2' और 'txtFieldValue1' और दूसरी पंक्ति पर केवल' txtFieldValue2' दिखाने के लिए? क्या आप मुझे नियम बता सकते हैं? –

1

वहाँ इस तरह की समस्याओं को ठीक करने के लिए कई तरीके हैं, लेकिन जब तक आप अपनी रिपोर्ट के बारे में अधिक विस्तृत जानकारी प्रदान । मैं वास्तव में कुछ अच्छे सुझाव नहीं आ सकता।

लेकिन यहां कुछ युक्तियां आपकी मदद कर सकती हैं।

एक TextField और एक पैरामीटर का उपयोग करें।

अलग-अलग TextField के साथ jrxml में अपना हेडर लिखने के बजाय, आप इसे पहले Java में बना सकते हैं, फिर पैरामीटर के रूप में स्टोर करें। इस तरह आप Java स्ट्रिंग लिखने के बारे में सभी तर्कों के साथ आपकी सहायता कर सकते हैं।

उपयोग एक TextField और तीन मापदंडों

आप बस TextField

में इस तरह भाव लिख सकते हैं ताकि आप अंतर है कि खाली TextField की वजह से रोका जा सकता है। या इस तरह शॉर्टेंड हालत अभिव्यक्ति का उपयोग करें।

$P{FirstName} + (${MiddleName}.isEmpty() ? "" : " " + ${MiddleName}) + " " + ${LastName} 
+0

क्या आप अपना कोड अपने प्रश्न में अपडेट कर सकते हैं? टिप्पणी कोड पढ़ने के लिए एक अच्छी जगह नहीं है। और कृपया ** अपनी समस्या की व्याख्या करें **, जैसा कि आप उम्मीद करते हैं कि आपकी रिपोर्ट किस तरह दिखती है, लेकिन अब यह कैसा दिखता है। –

+0

मैंने अपना कोड डाला है और मैं जावास्क्रिप्ट में रिपोर्ट बदलता हूं, यह मेरी तस्वीरें है, http://i.stack.imgur.com/guooK.jpg –

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