gpt4 book ai didi

data-binding - 从表到对话框的数据绑定(bind) + 将数据从对话框更新到表 SAPUI5

转载 作者:行者123 更新时间:2023-12-04 05:05:31 27 4
gpt4 key购买 nike

我有以下功能,它是对话框的一部分(其中数据应该与数据表绑定(bind)):

handleChangeRow : function() {

var oTable = sap.ui.getCore().getElementById('WorkOrder');

var oModel2 = oTable.getModel("test");

//var oModel2 = oTable.getModel();

console.log("oModel2 : " + oModel2);

var odata = oModel2.getProperty("/workorderdata");

console.log("odata : " + odata);
var selIndex = oTable.getSelectedIndex();
var selectedDataObject = odata[selIndex];

var oDialog = new sap.ui.commons.Dialog("Dialog", {
modal : true,
closed : function(oControlEvent) {
sap.ui.getCore().getElementById('Dialog').destroy();
}
});

oDialog.setTitle("Change Work Order");
var oLayout = new sap.ui.commons.layout.MatrixLayout( {
columns : 3,
width : "100%"
});

var oTF = new sap.ui.commons.TextField("scopeITRequestCode", {
tooltip : 'ScopeIT Request Code',
editable : true,
width : '200px',
value: "{test>/workorderdata/0/scopeITRequestCode}"
});

var oLabel = new sap.ui.commons.Label("lbscopeITRequestCode", {
text : 'ScopeIT Request Code',
labelFor : oTF
});

oLayout.createRow(oLabel, oTF);
}

with value: "{test>/workorderdata/0/scopeITRequestCode}" using "test" 我试图进入模型数据的模型的 id:

success : function(data) {          
this.model = new sap.ui.model.json.JSONModel();

this.model.setData({

workorderdata: data

});
sap.ui.getCore().setModel(this.model, "test");
}

效果很好,但仅适用于单个文本字段。我如何更改引用 "test>/workorderdata/0/scopeITRequestCode" 以便更改是动态的,并且用户可以更改所有文本字段?换句话说,如何将表中行的选定单元格的值与对话框中文本字段的值绑定(bind)?

最佳答案

您可以在此处找到传递给 rowSelectionChange 事件的参数: https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.table.Table.html#event:rowSelectionChange

话虽如此,并假设该对话框绑定(bind)到与您的表相同的模型,您的代码可能如下所示:

handleChangeRow : function(oEv) {
var oBindingContext = oEv.getParameter("rowContext");
var oPath = oBindingContext.getPath();

var oDialog = new sap.ui.commons.Dialog("Dialog", {
title : "Change Work Order",
modal : true,
closed : function(oControlEvent) {
sap.ui.getCore().getElementById('Dialog').destroy();
}
});
var oLayout = new sap.ui.commons.layout.MatrixLayout( {
columns : 3,
width : "100%"
});

var oTF = new sap.ui.commons.TextField("scopeITRequestCode", {
tooltip : 'ScopeIT Request Code',
editable : true,
width : '200px',
value: "{test>"+ oPath +"/scopeITRequestCode}"
});
var oLabel = new sap.ui.commons.Label("lbscopeITRequestCode", {
text : 'ScopeIT Request Code',
labelFor : oTF
});
oLayout.createRow(oLabel, oTF);
}

不幸的是,我不确定如何获取模型名称,但如果您在绑定(bind)中省略模型名称并使用 setModel 而不是更多,您可能也很好动态:

oDialog.setModel(oBindingContext.getModel());

由于 TextField 和 Table 绑定(bind)到同一个模型,更新字段将同时更新两个控件。你试图用 TextField 实现的是所谓的 TwoWayBinding (从模型中获取一个值(OneWay)并在更改时将其写回(TwoWay)),例如ODataModel 不支持。你可以这样检查:

myModel.isBindingModeSupported(sap.ui.model.BindingMode.TwoWay);

这里有更多关于绑定(bind)和绑定(bind)模式的细节: https://openui5.hana.ondemand.com/#docs/guide/Introduction.1.html https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.model.BindingMode.html https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.model.Model.html#isBindingModeSupported

GL克里斯

关于data-binding - 从表到对话框的数据绑定(bind) + 将数据从对话框更新到表 SAPUI5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21139745/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com