Как да въвеждам само месец и година в UI5?

Тук виждам, че мога да вмъкна въвеждане на дата-час: https://ui5.sap.com/#/entity/sap.m.DateTimeInput/sample/sap.m.sample.DateTimeInput

<DateTimeInput type="Date" placeholder="Enter Date ..." />

Но искам потребителят да избере само месец и година, а не ден. Възможно ли е?


person padibro    schedule 16.06.2014    source източник
comment
За други читатели: Не използвайте DateTimeInput, тъй като е остарял. Текущото решение е да използвате DatePicker с подходящия формат.   -  person Boghyon Hoffmann    schedule 28.03.2020


Отговори (2)


Да, изненадващо лесно:

Добавете следния атрибут към вашия DateTimeInput: displayFormat="MM/yyyy"

person Bogdan    schedule 25.06.2014
comment
DateTimeInput вече е отхвърлен. Някакво друго решение? stackoverflow.com/questions/39508413/ - person padibro; 15.09.2016
comment
@padibro Да, вижте stackoverflow.com/a/58802617/5846045 - person Boghyon Hoffmann; 11.11.2019

Тъй като sap.m.DateTimeInput е остарял, sap.m.DatePicker трябва да се използва в нашия случай.

Също като избирането само на годината, DatePicker вече може да обработва displayFormat="MM/yyyy" от UI5 1.68. Пикерът се отваря след това директно с месечен пикер.

По-долу е малка извадка с обвързване и валидиране:

sap.ui.getCore().attachInit(() => sap.ui.require([
  "sap/ui/core/Fragment",
  "sap/ui/model/json/JSONModel",
  "sap/ui/core/Core",
], async (Fragment, JSONModel, Core) => {
  "use strict";

  const control = await Fragment.load({
    definition: `<DatePicker xmlns="sap.m" xmlns:core="sap.ui.core"
      core:require="{ DateType: 'sap/ui/model/type/Date' }"
      maxDate="{/maxDate}"
      class="sapUiTinyMargin"
      displayFormat="MM/yyyy"
      valueFormat="MM/yyyy"
      width="7rem"
      value="{
        path: '/myMonthYear',
        type: 'DateType',
        formatOptions: {
          pattern: 'MM/yyyy',
          source: {
            pattern: 'MM/yyyy'
          }
        },
        constraints: { maximum: '12/2030' }
      }"
    />`,
  });

  Core.getMessageManager().registerObject(control, true);
  control.setModel(new JSONModel({
    myMonthYear:  `${new Date().getMonth() + 1}/${new Date().getFullYear()}`, // current month/year, e.g. '11/2019'
    maxDate: new Date("2030-12-31") // control awaits a JS date object for maxDate
  })).placeAt("content");
}));
<script id="sap-ui-bootstrap"
  src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
  data-sap-ui-libs="sap.ui.core, sap.m, sap.ui.unified"
  data-sap-ui-theme="sap_fiori_3"
  data-sap-ui-async="true"
  data-sap-ui-compatversion="edge"
  data-sap-ui-xx-waitfortheme="init"
></script><body id="content" class="sapUiBody"></body>

sapui5 datepicker месец само година
sapui5 datepicker месец година валидиране

person Boghyon Hoffmann    schedule 11.11.2019