如何从 sap.ui.table.Table 中的输入获取值?
How to get values from input in sap.ui.table.Table?
在 sap.ui.table.Table
中,我在一列中输入字段。会从后台获取近300条数据记录并绑定到其他列。
用户在输入字段中手动输入。此外,当他单击提交按钮时,我必须将所有输入的所有值作为数组。请给点建议。
您可以使用 table 的数据绑定来完成此操作,因为在 Table
控件上调用 getRows()
来访问每行的 Input
字段在这种情况下无济于事;它只有 returns 当前可见的行,并且您有大约 300 条记录可供访问。
解决方法如下:
- 从后端获取
JSONModel
中的所有数据。
- 通过迭代向模型数据中的每个项目添加一个 属性 说 inputValue。
- 将此模型绑定到 table 并在 table 的模板中使用 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 属性,将模型设置为 table;这将显示列中的所有 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));
}
我有一个有点相似的案例,我是按以下方式做的。如果您确实不需要未更改的记录,则可以使用。
- 有一个变量来存储 [] 条已更改的记录
- 将更改附加到输入字段
on change 将更改的记录推送到变量
var source = event.getSource();
source.getModel().getProperty(source.getBindingContext().getPath());
或输入字段的值。
event.getSource().getValue();
如果你有一个记录 ID,你可以只推送这个 ID 和输入值。
4. 提交时遍历 []
在 sap.ui.table.Table
中,我在一列中输入字段。会从后台获取近300条数据记录并绑定到其他列。
用户在输入字段中手动输入。此外,当他单击提交按钮时,我必须将所有输入的所有值作为数组。请给点建议。
您可以使用 table 的数据绑定来完成此操作,因为在 Table
控件上调用 getRows()
来访问每行的 Input
字段在这种情况下无济于事;它只有 returns 当前可见的行,并且您有大约 300 条记录可供访问。
解决方法如下:
- 从后端获取
JSONModel
中的所有数据。 - 通过迭代向模型数据中的每个项目添加一个 属性 说 inputValue。
- 将此模型绑定到 table 并在 table 的模板中使用 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 属性,将模型设置为 table;这将显示列中的所有 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));
}
我有一个有点相似的案例,我是按以下方式做的。如果您确实不需要未更改的记录,则可以使用。
- 有一个变量来存储 [] 条已更改的记录
- 将更改附加到输入字段
on change 将更改的记录推送到变量
var source = event.getSource(); source.getModel().getProperty(source.getBindingContext().getPath());
或输入字段的值。
event.getSource().getValue();
如果你有一个记录 ID,你可以只推送这个 ID 和输入值。 4. 提交时遍历 []