#sapui5
#sapui5
Вопрос:
Мне нужно использовать sap.m.Table для отображения около 200 записей. Я знал, что мне нужно использовать свойство growing. Однако, когда я добавляю «growing: true, growingThreshold: 100», в таблице по-прежнему отображается 100 записей, а кнопка «еще» не отображается.
Я прочитал несколько сообщений в блоге, связанных с этой проблемой. Я попробовал setSizeLimit моей модели, но это не сработало. Я использую JSONModel с countMode по умолчанию. Есть ли что-нибудь еще, что я могу попробовать?
Спасибо!
Ответ №1:
Установка ограничения размера не связана с функцией увеличения, она просто влияет на максимальное количество записей, используемых в привязке списка, например, вы сохранили 1000 записей, а ограничение по размеру равно 500. любой элемент управления списком, привязанный к этим записям, просто покажет 500.
JSONModel — это более или менее тупое хранилище данных, оно не поддерживает функцию роста, поскольку оно не знает о ваших данных и о том, как получить общее количество. Для достижения этого вам необходимо реализовать собственную привязку списка, которая вычисляет количество ваших данных для вашего конкретного случая. Вам также нужна пользовательская модель, которая использует эту привязку списка.
JSONModel
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);
};
});
});
Привязка списка
sap.ui.define([
"sap/ui/model/json/JSONListBinding"
], function(ListBinding) {
"use strict";
return ListBinding.extend("xxx.ListBinding", {
// in this case the array holding the data has a count property which stores the total number of entries
getLength : function() {
var path = !this.sPath ? "count" : this.sPath "/count";
var count = this.oModel.getProperty(path, this.oContext);
return (count) ? count : ListBinding.prototype.getLength.call(this);
}
});
});
Комментарии:
1. Спасибо за ваш вклад! Однако я каким-то образом решаю свою проблему, выполнив следующее:
2. Я изменил свой oTable.bindaggregate(«»,»dfcr> /», oTemplate); на oTable.bindaggregate («items», «dfcr> /», oTemplate);
3. Пожалуйста, предоставьте работающий пример.
4. Где это
BaseBinding
определено?5. Это должно быть JSONListBinding. Кажется, имя класса меняется со временем, поэтому вам нужно проверить с github.com/SAP/openui5 в openui5/src/sap.ui.core/src/sap/ui/model/json/JSONModel.js