如何在sap.m.Datepicker中设置与上一行相同的行?

时间:2016-06-19 13:39:51

标签: javascript user-interface sapui5

我有一个表,其中一个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);

sanpshot of the rows

1 个答案:

答案 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"}
        })
    }
});

您应该对齐patternsource属性以支持相同的格式(因为您使用的是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"}
        })
    }
});

还要确保在代码的初始化阶段将模式与正确的源格式对齐。