在sap.ui.table.Table
中,我在一列中有输入字段。它将从后端获得近300条数据记录,并在其他列中绑定。
用户手动输入输入字段。此外,当他点击提交按钮时,我必须将所有输入的所有值作为数组。请提出建议。
答案 0 :(得分:3)
您可以使用表的数据绑定来执行此操作,因为在getRows()
控件上调用Table
来访问每行的Input
字段在这种情况下无效;它只返回当前可见行,您有大约300条记录可供访问。
以下是解决方案:
JSONModel
。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));
}
答案 1 :(得分:1)
我的情况有点类似,我是按照以下方式做的。如果你真的不需要没有改变的记录,那就可以了。
在更改时将记录更改为变量
var source = event.getSource();
source.getModel().getProperty(source.getBindingContext().getPath());
或输入字段的值。
event.getSource().getValue();
如果您有记录ID,您只需按下此ID和输入值即可。 4.提交迭代通过[]