2016-06-19 14 views
0

Ich habe eine Tabelle, in der eine der Spalte sap.m.Datepicker Element hat. Es gibt eine Checkbox, die "dasselbe Startdatum für alle" und eine Plus-Schaltfläche zum Hinzufügen einer Zeile angibt. Wenn also die Plus-Taste gedrückt wird, schiebe ich eine leere Zeile in das Tabellenmodell, aber wenn das Kontrollkästchen aktiviert ist, sollte das Startdatum in der neuen Zeile gleich sein wie in der vorherigen Zeile. Aber wenn ich das Kontrollkästchen deaktiviert, wird Startdatum in einer neuen Zeile gleich gesetzt. Siehe den Code unten:Wie setze ich den Wert in einem sap.m.Datepicker in einer Zeile wie in der obigen Zeile?

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

Jetzt setze ich das Datum in neue Zeile.

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

Antwort

0

Gerade sap.ui.getCore().byId("tableid").getModel().refresh(true) nennen das Modell manuell und wenden Sie die Änderungen an der zugrunde liegenden Datenobjekt gemacht zu aktualisieren. Es ist unnötig, den Code sap.ui.getCore().byId("tableid").setModel(modelData) zu verwenden, da das Modell selbst bereits der Tabelle zugewiesen ist.

Stellen Sie außerdem sicher, dass sap.ui.getCore().byId("tableid").getModel().getData() ein Array zurückgibt, kein Objekt mit einer Eigenschaft, die auf das gewünschte Array zeigt. Das hängt von Ihrem JSON-Datenmodell ab.

Edit: Nach dem beigefügten JSBin Quellcode, fand ich die folgenden Probleme:

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

Sie richten sollten die pattern und source Eigenschaften das gleiche Format zu unterstützen (weil Sie getValue() verwenden, das das Datum in MMM dd yy Format zurück, aber die DatePicker selbst wartet auf ein Datum im Format MM/dd/yy.

die andere Sache ist, dass die Eigenschaft path die geschweiften Klammern nicht enthalten sollte. Auf der Grundlage dieser Dinge sollte eine korrekte DatePicker Definition wie folgt aussehen:

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

auch sicher, dass Sie Muster in der Initialisierungsphase des Codes auf die richtige Quelle Format auszurichten.

+0

Hallo nistv4n, ich habe versucht Ihren Rat, aber immer noch kommt das gleiche Datum in neuer Zeile, auch wenn die Checkbox deaktiviert ist. –

+0

@AshishJain Konnten Sie den relevanten Code für eine intelligente Prüfung bekannt geben (Sie können JSBin oder etwas anderes verwenden)? – nistv4n

+0

Ich teile einen Link für JSBin [link] (https://jsbin.com/fozima/edit?html,console,output). In diesem JSBin wenn Checkbox angekreuzt ist und dann eine Zeile hinzugefügt wird als das selbe Datum wird nicht in der neuen Zeile gesetzt –

Verwandte Themen