KDTable如何添加合计行?

 1      /**
 2       * 功能:添加合计行
 3       * 
 4       * @param table
 5       *            指定的KDTable
 6       * @param fields
 7       *            需要合计的列
 8       */
 9      public static void apendFootRow(KDTable table, String fields[]) {
10       int size = fields.length;
11       if (size == 0)
12        return;
13       Map sumValue = new HashMap();
14       // 利用getRowCount的到的行可能不正确
15       int count = table.getRowCount3();
16 
17       for (int i = 0; i < fields.length; i++) {
18        sumValue.put(fields[i], new BigDecimal("0.00"));
19       }
20       IRow footRow = null;
21       KDTFootManager footManager = table.getFootManager();
22       if (footManager == null) {
23        footManager = new KDTFootManager(table);
24        footManager.addFootView();
25        table.setFootManager(footManager);
26       }
27       // 计算所有指定行的合计值
28       footRow = footManager.getFootRow(0);
29       for (int i = 0; i < count; i++) {
30        IRow row = table.getRow(i);
31        for (int j = 0; j < fields.length; j++) {
32         sumValueForCell(row, fields[j], sumValue);
33        }
34       }
35 
36       if (footRow == null) {
37        footRow = footManager.addFootRow(0);
38       }
39       // 设置合计行显示样式
40       String colFormat = "%{0.00}f";
41 
42       String total = EASResource.getString(FrameWorkClientUtils.strResource
43         + "Msg_Total");
44 
45       table.getIndexColumn().setWidthAdjustMode(KDTIndexColumn.WIDTH_MANUAL);
46       table.getIndexColumn().setWidth(30);
47       footManager.addIndexText(0, total);
48       footRow.getStyleAttributes().setBackground(new Color(0xf6, 0xf6, 0xbf));
49       for (int i = 0; i < size; i++) {
50        String colName = fields[i];
51        footRow.getCell(colName).getStyleAttributes().setNumberFormat(
52          colFormat);
53        footRow.getCell(colName).getStyleAttributes().setHorizontalAlign(
54          HorizontalAlignment.RIGHT);
55        footRow.getCell(colName).getStyleAttributes().setFontColor(
56          Color.black);
57       }
58 
59       // 设置合计行的值
60       for (int i = 0; i < fields.length; i++) {
61        footRow.getCell(fields[i]).setValue(sumValue.get(fields[i]));
62       }
63      }
64      
65      private static void sumValueForCell(IRow row, String key, Map sumValue) {
66           ICell cell = row.getCell(key);
67 
68           if (cell != null) {
69            Object obj = cell.getValue();
70            if (obj != null) {
71             BigDecimal keyValue = (BigDecimal) sumValue.get(key);
72             keyValue = keyValue.add(new BigDecimal(obj.toString()));
73             sumValue.put(key, keyValue);
74            }
75           }
76          }

 

posted @ 2018-06-22 09:41  蚂蚁分享圈  阅读(1055)  评论(0编辑  收藏  举报