LightSwitch HTML中的DateTime TextBox在保存时增加一个小时

时间:2015-02-12 16:47:31

标签: visual-studio-lightswitch lightswitch-2013

编辑11-08-2015:我已经确认此错误已在2.5.3中修复,可通过nuget从2015年7月20日开始

编辑:微软证实这是一个将在下一个版本的lightswitch中解决的错误,< 2.5.3(link

我有一个简单的LightSwitch HTML页面,其中DateTime TextBox可以数据绑定到SQL Server DateTime字段(UTC +1)。

呈现页面时,会显示正确的日期。但是,当我使用

更新时
msls.application.applyChanges()  

我的DateTime TextBox值增加一个小时,即使该值未更改,但在数据库中设置了正确的日期。我试图用JS解决这个问题,但我还没有找到一个好的解决方案。

我只是不明白为什么在加载时正确呈现日期时间,但在更新后呈现错误,即使值未更改。如果它是一种方式或另一种我可能只是破解它,但现在它都是不一致的。

LightSwitch真的与datetime不兼容吗?

编辑:找到遇到同样问题的其他人: https://social.msdn.microsoft.com/Forums/vstudio/en-US/90cd2036-0001-4f59-a2ad-a032dd04d9e1/html-date-picker-display-date-changing-on-save?forum=lightswitch&prof=required

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/e12f24ad-bc16-410b-ab31-7189118d2b8b/ls-html-client-weird-date-issue?forum=lightswitch

1 个答案:

答案 0 :(得分:1)

打开msls-2.5.2.js

找到此部分代码:

entitySet._loadedEntities[entityData.__metadata.uri] = entity;
                    } else if (entityState === _EntityState.modified) {
                        originalEntityData = entityData.__original;
                        $.each(entityDetails.properties.all(), function (j, property) {

您需要添加:convertDatesToLocal(changeResponse.data);

示例:

entitySet._loadedEntities[entityData.__metadata.uri] = entity;
                        } else if (entityState === _EntityState.modified) {
                            convertDatesToLocal(changeResponse.data);

                            originalEntityData = entityData.__original;
                            $.each(entityDetails.properties.all(), function (j, property) {

希望这有帮助。