2015-12-03 46 views
0

我有一個動態獲取數據的jtable。舉個例子,我有一個jtable,它通過點擊搜索按鈕加載所有員工信息。然後用戶可以過濾這些員工的數據。從部門,員工號碼等。我想將這些過濾的數據傳遞到ireports。不通過從數據庫中獲取數據。只能通過從jtable獲取數據。我寫了下面的代碼。但它顯示錯誤。從Jtable傳遞數據到Ireport

try { 
       DefaultTableModel df = (DefaultTableModel) jTable1.getModel(); 
       JRTableModelDataSource dataSource = new JRTableModelDataSource(df); 
       String reportSource = "./Leave.jrxml"; 
       JasperReport jr = JasperCompileManager.compileReport(reportSource); 
       Map<String, object> params = new HashMap<String, object>(); 
       params.put("title1" , "title 1"); 
       JasperPrint jp = JasperFillManager.fillReport(jr, params, dataSource); 
      } catch (JRException ex) { 
       Logger.getLogger(LeaveManagementInfosystem.class.getName()).log(Level.SEVERE, null, ex); 
      } 

它說「標題1」不是一個對象。我再次嘗試不添加「」。但同樣的錯誤發生。我如何擺脫這個錯誤。

+0

這真的是如何使你的代碼的樣子:「'地圖<字符串,對象>'「?你的應用程序中有沒有叫'object'的類? – kryger

+0

看起來像'object'應該讀取'Object'(大寫)。 –

回答

1

我們假設你有一個的JTable 3列這是s_idnameage

enter image description here

在你的碧玉報告中,您應該創建領域將根據您的表列相同的名稱。

enter image description here

<field name="s_id" class="java.lang.String"/> 
    <field name="name" class="java.lang.String"/> 
    <field name="age" class="java.lang.String"/> 

你不需要參數傳遞給你的碧玉報告。

JasperReport jasperReport = JasperCompileManager.compileReport(
        source); 
      DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); 
      JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, 
        null, new JRTableModelDataSource(model)); 
    JasperViewer.viewReport(jasperPrint, false); 
+0

我是否只需要添加列名? – kate

+0

Yes.column的名稱,因爲它是字段名稱.. –

+0

希望你得到它的正確。如果有用,請毫不猶豫地將其標記爲正確的答案。 –

0

創建具有相同的參數作爲列名綁定的田地 的價值,並添加PARAMS查詢上面的Java代碼對我的作品