增长表不使用JSONModel

时间:2016-10-11 02:09:38

标签: sapui5

我需要使用sap.m.Table来显示大约200个条目。我知道我需要使用不断增长的财产。然而,当我添加"增长:true,growingThreshold:100"时,该表仍显示100个条目,并且"更多"按钮未显示。

我已经阅读了一些与此问题相关的博文。我尝试过我的模型的setSizeLimit,但它没有用。我使用带有默认countMode的JSONModel。还有什么我可以尝试的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

设置大小限制与增长功能无关,它只影响列表绑定中使用的最大条目数,例如你已经存储了1000个条目,大小限制为500,任何绑定到这些条目的列表控件都只显示500个。

JSONModel或多或少是一个愚蠢的数据存储,它不支持不断增长的功能,因为它不了解您的数据以及如何获得总体计数。为此,您需要实现自己的列表绑定,以计算特定情况下的数据计数。您还需要一个使用此列表绑定的自定义模型。

JSONModel

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <RelativeLayout
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:id="@+id/drawerPane"
        android:layout_gravity="start">


        <RelativeLayout
            android:id="@+id/logoBox"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:background="@color/material_blue_grey_800"
            android:padding="8dp" >

            <ImageView
                android:id="@+id/logo"
                 android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_marginTop="15dp"
                android:layout_centerInParent="true"/>

        </RelativeLayout>

        <ListView
            android:id="@+id/settingsList"
            android:layout_width="280dp"
            android:layout_height="match_parent"
            android:layout_below="@+id/logoBox"
            android:choiceMode="singleChoice"
            android:background="#ffffffff" />
    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>

ListBinding

  sap.ui.define([
       "sap/ui/model/json/JSONModel",
       "xxx/ListBinding"
  ], function(JSONModel, ListBinding) {
      "use strict";

      return JSONModel.extend("xxx.JSONModel", {

          bindList : function(path, context, sorters, filters, parameters) {
              return new ListBinding(this, path, context, sorters, filters, parameters);
          };
      });

  });