SAPUI5表格底部的总行

时间:2015-04-09 15:16:01

标签: xml sapui5 totals

我正在使用sap.ui.table来显示数据列。只有12行数据 - 数据从ajax调用加载到数据库。我希望在列的底部有一个总行。我找不到任何显示列总计的示例。

以下是XML视图中我的表格的一小部分。

        <table:Table 
        id="CompRecs" 
        visibleRowCount="12"  
        visible="true" 
        rows="{
            path:'/yearInfo/'
        }"
        navigationMode="Paginator">
           <table:toolbar>
              <Toolbar>
                <Label id="recText"  text="Comparing " ></Label>
                <Input id="startYear"  width="15%" value="{/startYear}"/>
                <Label id="selText"   text=" to "></Label>
                <Input id="endYear"  width="15%" value="{/endYear}"/>
                <Button text="Compare Years" press="findRecs"/>
              </Toolbar>
           </table:toolbar>
           <table:columns>
                <table:Column >
                    <Label text="Month" />
                    <table:template>
                        <Text text="{path: 'monthECC',formatter: 'controllers.Formatter.month'}"></Text>
                    </table:template>
                </table:Column> 
                <table:Column >
                    <Label text="Classified Products/Components" />
                    <table:template>
                        <Text text="{classProductsA} ({classProductsB})"></Text>
                    </table:template>
                </table:Column> 
                <table:Column  >
                    <Label text="Classified Business Partners" />
                    <table:template>
                        <Text text="{classPartnersA} ({classPartnersB})"></Text>
                    </table:template>
                </table:Column>
            </table:columns> 
       </table:Table>

我想要做的是在分类产品和合作伙伴等列的底部有一个总数....这些列显示两个值 - 一个用于当前年份,一个用于上一年度( 'classproductsA'=第1年,'classproductsB'=第2年)。

所以看起来应该类似于:

Month      Classified Products          Classified Partners
January         3 (5)                       4 (7)
February        4 (3)                       5 (1)

Totals:         7 (8)                       9 (8)

我没有找到任何可以尝试的例子。

编辑:示例数据:

{"yearInfo":
[{"monthECC":"1","classProductsA":"17","classProductsB":"140","classPartnersA":"1161","classPartnersB":"1116"},
{"monthECC":"2","classProductsA":"37","classProductsB":"66","classPartnersA":"1389","classPartnersB":"1112"},    
{"monthECC":"3","classProductsA":"60","classProductsB":"66","classPartnersA":"2111","classPartnersB":"1905"}]

显示3个月的数据以匹配上面的XML列。所以想要:

Month      Classified Products          Classified Partners
January         17 (140)                      1161 (1116)
February        37 (66)                       66 (1389)
March           60 (66)                       2111 (1905)

Totals:         114 (272)                     3338 (4410)

1 个答案:

答案 0 :(得分:2)

你有没有尝试为桌子写一个页脚? UI5 Explored项目中表的breadcrumb示例具有此代码。您只需要编写页脚聚合。 现在要编写计数,你必须指定你需要的元素作为部分,然后放一个格式化程序来获得结果。 对于您的数据,要在标签中获取classProductsA总数。这是js中的代码。 (对于xml来说太糟糕了,但肯定会以同样的方式工作)

var totalLabel = new sap.m.Label({
'text':
{path:'/yearInfo',
     formatter:function(fullArray){
            var classProductsATotal = 0;
           $.each(fullArray ,function(singleElement){
            classProductsATotal = classProductsATotal+singleElement.classProductsA;
                 }); //end of $each.
    return classProductsATotal;
}});

格式化程序是您必须查找的功能。 路径设置为/yearInfo,这意味着它将完整数组作为格式化程序函数的输入。一旦它在那里,你总是可以循环来获得总数。