2014-04-09 101 views
0

在我的jasper報告中,我有過濾器輸入參數叫做名字,姓氏。使用ireport,如果最終用戶輸入名字或姓氏,如何在我的報告中顯示這些參數。在jasper報告中顯示輸入參數?

在我的報告中,我想顯示以下使用參數。

篩選:姓莊的 姓 - 保羅

如果輸入這些參數都沒有,沒有人會被顯示。

我希望你們能幫助我。

回答

0

我開發此功能的一種方法是通過讀取.jasper文件(編譯報告)中指定的參數。這樣做是代碼:

 JasperReport template = null; 

    try { 
     template = (JasperReport)JRLoader.loadObject(fs); 
     _logger.fine(putUsernameInsideLogger()+"JasperReport file " + template); 

    } catch (JRException e) { 
     _logger.severe(putUsernameInsideLogger()+"Error during object loading (.jasper file loading) inside insert() method - ReportBean ",e); 
    } 


    JRParameter[] params = template.getParameters(); 

    int counter = 1; 
      for(JRParameter param : params) { 
       System.out.println("PARAMETER nr "+counter++); 
       if(!param.isSystemDefined() && param.isForPrompting()){ 
        System.out.println("Name: "+param.getName()+ " ,\\nDesc: "+param.getDescription()+" ,\\nDefaultValueExpr: "+param.getDefaultValueExpression()+" ,\\nNestedTypeName: "+param.getNestedTypeName()+ " ,\\nValueClassName: "+param.getValueClassName()+" , \\nNestedType: "+param.getNestedType()); 

        if (param.getValueClassName().equalsIgnoreCase("java.lang.String")){ 
        //expose a ui component bind } 
        if (param.getValueClassName().equalsIgnoreCase("java.util.Date")){ 
        //same as above}  
        if (param.getValueClassName().equalsIgnoreCase("java.lang.Integer")){ 
        //my example 
        RichInputNumberSpinbox ui = new RichInputNumberSpinbox(); 
            ui.setId("rit"+counter); 
            ui.setLabel(param.getName()); 
            reportFieldsGroupLayout.getChildren().add(ui);} 
       } 

      } 

這樣,你就可以得到在報表中指定的參數,並創建暴露在用戶界面的UI組件。在此之後,記得在報告生成時間閱讀插入到這些組件的值,並將其插入到Map並把它傳遞給出口商:

Map parameters = new HashMap(); 
     parameters.put("title", uiComponent.getValue()); //get the value from your ui component 
     JasperPrint print = null; 
      print = JasperFillManager.fillReport(template, parameters, conn); 
-1

要在報告中顯示的參數值,只需將一個「歸檔文本」並只分配參數。

如果你想默認顯示「All」而不選擇任何參數,那麼你可以使用這個條件。

 $P{p_firstname} == null? " All " : 
    (
    $P{p_firstname}.isEmpty() ? " All ": 
    $P{p_firstname} 
    )