Вы можете сделать это с помощью привязки данных таблицы, как вызов getRows()
на Table
контроля доступа Input
поля каждой строки не помогло бы в этом случае, она только возвращает только видимые в данный момент строки и у вас есть около 300 записей для доступа.
Вот решение:
- Получить все данные из заднего конца в
JSONModel
.
- Добавьте одно свойство: inputValue к каждому элементу в данных модели, итерации по нему.
- Привяжите эту модель к таблице и используйте inputValue свойство в шаблоне таблицы для связывания столбца, содержащего
Input
полей.
Как JSONModel
поддерживает двухстороннее связывание, все значения, которые пользователь вписываться в Input
полей доступны в вашей модели.
И, наконец, перебирайте данные модели, чтобы получить inputValue для каждой строки.
Вышеуказанные действия в действии:
Шаг 1 и 2:
setModelForTable: function() {
var oModel = sap.ui.model.json.JSONModel(<URLToLoadJSON>);
var length = oModel.getData().results.length;
for (var i = 0; i < length; i++) {
var path = "/results/" + i + "/inputValue";
oModel.setProperty(path, "");
}
}
Шаг 3:
Теперь, что у вас есть модель с InputValue собственности во всех элементов данных, установить модель на таблицу; который сначала отобразит все поля Input
в столбцах, пустых, и обновит соответствующую запись модели, когда пользователь ее изменит.
<t:Column>
<t:label>
<Text text="User Input" />
</t:label>
<t:template>
<Input value="{inputValue}" />
</t:template>
</t:Column>
Наконец, получите все введенные значения в массиве.
var length = oModel.getData().results.length;
var aInputvalues = []
for (var i = 0; i < length; i++) {
var path = "/results/" + i + "/inputValue";
aInputvalues.push(oModel.getProperty(path));
}
Hi dopedev, Спасибо за предложение ur. Можете ли вы объяснить подробно? Пожалуйста, – user6757698
Конечно, дай мне немного времени! – Dopedev
Спасибо, допедев. Я использую sap.m.Input – user6757698