2017-01-10 8 views
-1

Мне нужно прочитать данные из цикла ODataModel в цикле для вычисления значений. Так что oData.Read() не подходит для меня, так как он назовет Asynchronously и вызовет другой метод. Я хочу, чтобы петля как петля в Array и, возможно, oDataModel.getProperty() может мне помочь. Я выполняю ниже код в Chrome Console и получаю ниже результата.Чтение данных из ODataModel в цикле для вычисления суммы

m1 = this.getView().getModel("Model Name"); 

m1.getProperty("/")

Результат: Object {SEARCH('61451144935589051'): Object, SEARCH('61451144935589052'): Object, SEARCH('61451144935589053'): Object, SEARCH('61451144935589054'): Object, SEARCH('61451144935589055'): Object…}

Однако, если я пытаюсь с ниже код затем получить undefined в качестве вывода.

m1.getProperty("/SEARCH") 

ответ

1

Совершенно верно, что вы получаете undefined. Очевидно, что у вас есть тип сущности SEARCH с одним ключом, и ваша модель хранит несколько объектов этого типа сущности.

Вы можете захватить все данные, хранящиеся в вашей модели, и обработать их, как в примере с добавленным кодом. Однако это настоятельно не рекомендуется, поскольку вы ставите много логики клиенту. Лучшим подходом была бы функция или даже дополнительный объект в вашей службе OData.

var data, i, name, names, sum; 

data = m1.getProperty("/"); 
names = Object.getOwnPropertyNames(data); 
sum = 0; 
for (i = 0; i < names.length; i += 1) { 
    name = names[i]; 
    // you have to check for the correct entity 
    if (/SEARCH/.test(name)) { 
     sum += data[name].value; 
    } 
} 
+0

Спасибо, есть ли лучшее представление о том, как можно суммировать уровень столбцов таблицы сетки.? И ваш другой рекомендуемый подход мне непонятен. Можете ли вы предоставить примерный код? –

+0

Я только что нашел http://stackoverflow.com/questions/41500043/column-level-sum-aggregation-in-sapui5-gridtable. Как-то не имеет смысла задавать один и тот же вопрос с меньшей информацией! – matbtt

 Смежные вопросы

  • Нет связанных вопросов^_^