验证输入框在 table 行中被禁用 - SAP UI5
Validate input box is disabled in table rows - SAP UI5
我有一个 table,其中有一列有 3 个按钮和一个输入框。更新、保存、输入框和取消。当我们第一次进入页面时,table 加载所有行的输入框为禁用。只有一个按钮 - 更新在那个时候是可见的(在每一行)。单击“更新”后,输入框将启用(针对该行),“更新”将被隐藏,保存和取消按钮将变为可见。如果按下保存或取消,两个按钮都会隐藏,输入框再次被禁用,更新可见。这是为了确保用户在输入框中输入值并正确保存。
问题:如果我点击更新,并输入一些随机值。此时如果我保存好,但如果我不保存并且在 table 下是一个按钮 post 数据到后端,如果我单击它,我输入的值将传递到后端。我想确保每一行都经过验证以查看用户是否具有 saved/cancel 并且输入框被禁用(意味着输入的值是正确的和最终的)。我应该如何循环?
View.xml
<table:Column>
<Label text="ABC"/>
<table:template>
<HBox alignItems="Center">
<Button text="Update" visible="{path:'model>', formatter:'.updateBtnVisibility'}" press="openQtyInputBox"/>
<Button text="Save" visible="{= !${model>qtyEditable}}" press="qtySave"/>
<Input visible="{path:'model>', formatter:'.inputValidation'}" type="Number" enabled="{!${model>qtyEditable}}" value="{path: 'model>QtyToReceive', type: 'sap.ui.model.type.Integer', constraints : {minimum: 0}}"/>
<core:Icon src="sap-icon://reset" tooltip="Cancel" press="cancelQtyInput" visible="{= !${model>qtyEditable}}"/>
</HBox>
</table:template>
</table:Column>
您似乎已经使用 qtyEditable
在模型中存储了输入状态。您可以使用它和 Array.filter 循环遍历 table 行的上下文:
validateRows: function() {
var rowContexts = this.getView().byId("your-table-id").getBinding("rows").getContexts();
if (rowContexts.filter(function (context) {
return context.getProperty("qtyEditable");
}).length === 0) {
// all rows are saved
} else {
// at least one row is still in edit mode
}
}
我有一个 table,其中有一列有 3 个按钮和一个输入框。更新、保存、输入框和取消。当我们第一次进入页面时,table 加载所有行的输入框为禁用。只有一个按钮 - 更新在那个时候是可见的(在每一行)。单击“更新”后,输入框将启用(针对该行),“更新”将被隐藏,保存和取消按钮将变为可见。如果按下保存或取消,两个按钮都会隐藏,输入框再次被禁用,更新可见。这是为了确保用户在输入框中输入值并正确保存。
问题:如果我点击更新,并输入一些随机值。此时如果我保存好,但如果我不保存并且在 table 下是一个按钮 post 数据到后端,如果我单击它,我输入的值将传递到后端。我想确保每一行都经过验证以查看用户是否具有 saved/cancel 并且输入框被禁用(意味着输入的值是正确的和最终的)。我应该如何循环?
View.xml
<table:Column>
<Label text="ABC"/>
<table:template>
<HBox alignItems="Center">
<Button text="Update" visible="{path:'model>', formatter:'.updateBtnVisibility'}" press="openQtyInputBox"/>
<Button text="Save" visible="{= !${model>qtyEditable}}" press="qtySave"/>
<Input visible="{path:'model>', formatter:'.inputValidation'}" type="Number" enabled="{!${model>qtyEditable}}" value="{path: 'model>QtyToReceive', type: 'sap.ui.model.type.Integer', constraints : {minimum: 0}}"/>
<core:Icon src="sap-icon://reset" tooltip="Cancel" press="cancelQtyInput" visible="{= !${model>qtyEditable}}"/>
</HBox>
</table:template>
</table:Column>
您似乎已经使用 qtyEditable
在模型中存储了输入状态。您可以使用它和 Array.filter 循环遍历 table 行的上下文:
validateRows: function() {
var rowContexts = this.getView().byId("your-table-id").getBinding("rows").getContexts();
if (rowContexts.filter(function (context) {
return context.getProperty("qtyEditable");
}).length === 0) {
// all rows are saved
} else {
// at least one row is still in edit mode
}
}