我正在SAPUI5
编写一个前端程序,它应该允许用户将数据(如字符或数字)输入表格,然后在点击按钮后读取数据#34;提交"
到目前为止,我所看到的是与从选定行获取数据相关的所有内容。
我对这个领域很陌生,所以我感谢任何帮助!
我正在使用sap.ui.commons.table.Table
。该表最初从JSON
文件中获取数据,但我已经完成了测试绑定的数据。
//data definition:
var oPosData = [{PoItemI : "0010"}];
//Table:
var oTable = new sap.ui.table.Table("PoData",{
//title: "Positionsdetails",
visiblRowCount: 5,
firstVisibleRow: 3,
selectionMode: sap.ui.table.SelectionMode.Single
});
// For simplicity, i will just ad 1 column to the table. but i have more
//Positionsnummer:
var oColumn_PosNr = new sap.ui.table.Column("PosNr",{
label: new sap.ui.commons.Label({text: "Position"}),
//template: new sap.ui.commons.TextView().bindProperty("text", "Positionsnummer"),
template: Input1 = new sap.ui.commons.TextField("PosNrTF",{
key: "text",
value: "{PoItemI}"
}),
//sortProperty: "Positionsnummer",
//filterProperty: "Positionsnummer",
width: "200px"
});
//Input1.setValue("Bla"); Input1.getValue());
//Input1.attachChange(function(oEvent) {
var output = oEvent.getSource().getBindingContext().getPath();
alert('Text changed to : '+ output);
console.log(output)
});
oTable.addColumn(oColumn_PosNr);
//Create a model and bind the table rows to this model
var oModel_Item = new sap.ui.model.json.JSONModel();
oModel_Item.setData({modelData: oPosData});
oTable.setModel(oModel_Item);
oTable.bindRows("/modelData");
使用此表格控件执行此操作是否错误?或者我做绑定错了?当我试着读它时它不起作用。
我也很难提取控件的绑定部分。
// Submit button
// I would be happy if this button prints me the value, that is stored in the
//table
var oButton1 = new sap.ui.commons.Button({
text : "Submit",
style: sap.ui.commons.ButtonStyle.Emph,
width: '50%',
//tooltip : "",
//press : function() {alert('Pressed me' + );}
press : function() {
var table_model = sap.ui.getCore().getControl("PoData").getModel();//.getPath();//.getPath();
var table_row = sap.ui.getCore().getControl("PoData").getRows()[1].getCells()[1];//.getValue();
var table_path = sap.ui.getCore().getControl("PosNrTF").getBindingContext(table_model);//.getPath();
var table_column_LABEL = oTable.getColumns()[0].getLabel().mProperties.text;
var table_column_template = oTable.getColumns()[0][1];//getBindingContext();
alert(table_column_LABEL);
alert(table_model);
alert(table_row);
alert(table_path);
alert(table_column_template);
},
layoutData : new sap.ui.layout.GridData({
indent: "L5 M5",
span: "L1 M6 S12"
})
});
如果存储在列中,我无法获取存储在列模板部分中的值。
我应该以不同的方式执行此操作,例如向表中添加行而不是列吗?我遇到了 CustomData 或 Content ,但不知道如何使用它,如果这解决了问题?!我是否应该使用绑定,如果我只是对用户输入或绑定的数据感兴趣将通过"自动更新值"通过双向绑定(不知道如何做到这一点)。
答案 0 :(得分:0)
我有点困惑,因为你的解释不明确,但让我们看看你的代码有一些有价值的评论:
//Input1.attachChange(function(oEvent) {
var output = oEvent.getSource().getBindingContext().getPath();
alert('Text changed to : '+ output);
console.log(output)
});
此事件处理程序提供一个oEvent对象,该对象包含新值本身(oEvent.getParameter("newValue")
)。如果您想从分配给该字段的模型中检索该对象,请使用以下代码段:oTable.getModel().getProperty(output);
您不必向表中添加列;它是由创建到行聚合的聚合绑定完成的。
答案 1 :(得分:0)
您好nistv4n并感谢您的帮助!!!
当我打印/提醒值时,它是空白的。昨天晚上我找到了一个解决方法,我将放在这里。我所做的改变是首先使我的表本身可编辑(而不仅仅是列)。我不知道这是如何影响它的,但后来我添加了一个"添加"按钮,我只是使用push来将新的初始数据推送到我的数据域中,
类似于oPosData.push({PosItemA:" init"}); 然后我更新了将它与表格粘合的模型 oModel_Item.setData({modelData:oPosData}); 这迫使它创建一个新的行,我可以编辑我喜欢的方式,我能够通过简单的oPosData [我创建的行的索引]检索数据.PosItemI
每次按下添加按钮时我都使用了一个计数器,以便能够访问oPosData中的所有数据