我有一个表,其中一个Column有sap.m.Datepicker元素。有一个复选框,上面写着“所有人的开始日期相同”,还有一个加号按钮来添加一行。因此,当单击加号按钮时,我在表模型中推送一个空行,但如果勾选了复选框,则新行中的开始日期应与前一行相同。 但是如果我取消选中该复选框,则仍然在新行中开始日期设置相同。 请参阅以下代码:
var datepickered = new sap.m.DatePicker({
value: {
path:"{Start_Date}",
type: new sap.ui.model.type.Date({
pattern:"MMM dd yy",
source:{pattern:"MM/dd/yy"}
})
},});
现在我在新行中设置日期。
var modelData = sap.ui.getCore().byId("tableid").getModel().getData();
var value = sap.ui.getCore().byId("tableid").getItems()[0].getCells()[3];
modelData.push({Start_Date:value.getValue()});
sap.ui.getCore().byId("tableid").setModel(modelData);
答案 0 :(得分:0)
只需调用sap.ui.getCore().byId("tableid").getModel().refresh(true)
手动刷新模型并应用对基础数据对象所做的更改。
没有必要使用sap.ui.getCore().byId("tableid").setModel(modelData)
代码,因为模型本身已经分配给表。
还要确保sap.ui.getCore().byId("tableid").getModel().getData()
返回一个数组,而不是具有指向所需数组的属性的对象。这取决于您的JSON数据模型。
修改强> 根据附带的JSBin源代码,我发现了以下问题:
var datepickerst = new sap.m.DatePicker({
value: {
path:"{Start_Date}",
type: new sap.ui.model.type.Date({
pattern:"MMM dd yy",
source:{pattern:"MM/dd/yy"}
})
}
});
您应该对齐pattern
和source
属性以支持相同的格式(因为您使用的是getValue()
,这将以MMM dd yy
格式返回日期,但是DatePicker
本身等待MM/dd/yy
格式的日期。
另一件事是path
属性不应包含花括号。基于这些,正确的DatePicker
定义应如下所示:
var datepickerst = new sap.m.DatePicker({
value: {
path:"Start_Date",
type: new sap.ui.model.type.Date({
pattern:"MMM dd yy",
source:{pattern:"MMM dd yy"}
})
}
});
还要确保在代码的初始化阶段将模式与正确的源格式对齐。