国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

用CustomDataSource向iReport中傳遞數(shù)據(jù)

2019-11-18 11:22:09
字體:
供稿:網(wǎng)友

iReport是個很好用的免費(fèi)報(bào)表制作工具。它小巧易用,也不乏擴(kuò)展性。利用CustomDataSource向報(bào)表中傳數(shù)據(jù)就是它的可擴(kuò)展性的一個方面。
實(shí)現(xiàn)CustomDataSource需實(shí)現(xiàn)接口JRDataSource。這里有兩個方法-public boolean next() throws JRException 和public Object getFieldValue(JRField field) throws JRException需要實(shí)現(xiàn)。
當(dāng)然,既然是dataSource,肯定得有個乘載數(shù)據(jù)的地方,這里我用的是一個List,List中的一個對象封裝了一條記錄。iReport會利用next()遍歷這個List,從而取得所有的數(shù)據(jù)。
getFieldValue則是用來從List中取相應(yīng)的值。
String fieldName = field.getName();
      ArchPerInfoForm api = new ArchPerInfoForm();
      api = (ArchPerInfoForm)data.get(index);

      if ("A01".equals(fieldName)) {
         value = api.getAac001();
      } else if ("A02".equals(fieldName)) {
         value = api.getAac002();
      } else if ("A03".equals(fieldName)) {
         value = api.getAac003();
      }
      return value;
這里傳來一個field,可以通過判定field的fieldName來決定取form中的什么字段。
但這樣實(shí)現(xiàn)很不科學(xué),我們有很多報(bào)表需要這么處理,而這里的dataSource根本沒什么復(fù)用性。
考慮了一下,我決定抽象出一個接口。那就是ReportDataInterface,在這里定義一個方法getFieldByName(String fieldName)。這樣我把List中取得的對象當(dāng)成這個接口來處理,只對這個接口進(jìn)行操作。在其他地方就不必重新寫這個dataSource,只需定義一個對象,實(shí)現(xiàn)ReportDataInterface接口,然后把裝有數(shù)據(jù)的這些對象放到List中傳給這個DataSource,一切ok了。
對了這里我似乎忘了說一點(diǎn),上面代碼中的”A01”是我在報(bào)表中定義的列的名字。



上一篇:JNI完全手冊

下一篇:Jive論壇與Spring框架

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 濉溪县| 东丽区| 昌黎县| 泰和县| 寿光市| 利辛县| 宜川县| 泰顺县| 茂名市| 阿坝| 宾川县| 襄城县| 汽车| 馆陶县| 磴口县| 家居| 河北省| 富源县| 绍兴市| 武威市| 彭州市| 洪泽县| 东乌| 南阳市| 大邑县| 古浪县| 佛坪县| 滁州市| 台东市| 恩施市| 德保县| 越西县| 青铜峡市| 绥芬河市| 西安市| 太保市| 乐平市| 远安县| 蒲城县| 阿瓦提县| 内江市|