javascript - 日历禁用带有来自 XSODATA 绑定 SAPUI5 的数据的日期
问题描述
我使用 XSODATA 服务设置了 HANA ddbb,并且能够正确使用聚合绑定来显示数据。
我有一张包含用户、部门和访问日期的表格。
我正在尝试将我的日历绑定在view.xml
iesap.ui.unified.Calendar
中并禁用日期,从 HANA 访问日期中检索数据并禁用存储在数据库中的日历上的日期
例如 ; 我有表访问:user1 department2 2018-08-13; 用户 2 部门 2 2018-09-21;
我想禁用那些特定的日期和相应的星期(我会在弄清楚如何做这一天之后再做的那一周)
是否有可能获取该数据,使用 odata 禁用日期并使用控制器对其进行操作?
还是有另一种更简单的方法?现在我只能硬编码
((controller.js))
disableDate:function(){
var oModel2 = new JSONModel("DisableDate");
oModel2.setData({
minDate: new Date(2018, 0, 1),
maxDate: new Date(2050, 11, 31),
disabled: [{start: new Date(2018, 0, 4), end: new Date(2018, 0, 18)},
{start: new Date(2016, 0, 15)}
]
//change this last part to variables start and end dates and add info
});
this.getView().setModel(oModel2, "DisableDate") ;
((in xml.view)
<u:Calendar
id="calendar"
select="handleCalendarSelect"
minDate="{path: 'DisableDate>/minDate'}"
maxDate="{path: 'DisableDate>/maxDate'}"
disabledDates="{path: 'DisableDate>/disabled'}">
<u:disabledDates>
<u:DateRange
startDate="{DisableDate>start}"
endDate="{DisableDate>end}"/>
</u:disabledDates>
</u:Calendar>
在此先感谢,我这几天一直在尝试解决这个问题
解决方案
通过使用绑定来连接数据(模型)和视图,您将朝着正确的方向前进。不过,您手动创建一个(本地)json 视图。尝试将其连接到来自后端的模型(在您的情况下为 xsodata)
您需要提供数据。例如 Odata Entity
Visit
,每个条目如下所示:姓名:User1(Edm.String 类型)部门:dep2(Edm.String 类型) DateOfVisit:2018-08-13(Edm.DateTime 类型)
假设 OData 模型
VisitModel
由该 odata 服务提供服务像这样绑定视图:
<u:Calendar
...
disabledDates="{VisitModel>/VisitSet}">
<u:disabledDates>
<u:DateRange startDate="{VisitModel>DateOfVisit}" />
</u:disabledDates>
</u:Calendar>
(如果您有StartDateOfVisit
andEndDateOfVisit
在您的实体上,您可能希望在 DateRange 对象上使用startDate
and )endDate
更新:禁用整周,使用
<u:Calendar
...
disabledDates="{VisitModel>/VisitSet}">
<u:disabledDates>
<u:DateRange
startDate="{path: 'VisitModel>DateOfVisit', formatter: '.formatStartOfWeek'}"
endDate="{path: 'VisitModel>DateOfVisit', formatter: '.formatEndOfWeek'}"
/>
</u:disabledDates>
</u:Calendar>
在你的控制器中
...
formatStartOfWeek: function(oDate) {
if (oDate && oDate.getTime) {
// compute Monday
return new Date(oDate.getTime() - (oDate.getDay()-1)*24*60*60*1000 );
} else {
return oDate;
}
},
formatEndOfWeek: function(oDate) {
// compute and return Sunday
},
...
推荐阅读
- vue.js - 使用 Vue-CLI 创建的应用程序提供 404 页面
- node.js - NodeJS - 多线程应用程序数据库瓶颈
- c - 如何找到堆栈在C中的结束位置
- pandas - 使用 agg 重新采样不同的行为并调用函数
- c++ - C++ on Vistual Studio with CMake error: manifest 'build.ninja' still dirty after 100 tries
- android - 带有 MVVM 的 RxJava:带有 setValue() 的 MutableLiveData 与 LiveDataReactiveStreams
- android - React Native - Unexpected Identifier 'str' with fresh project
- java - How do I make this image larger?
- mysql - 有没有办法让mysql在获取时自动转换时区?
- python - 为什么 Github API for content update 会抛出 400 错误?