插入DateTime.now()Lightswitch HTML

时间:2016-02-09 18:28:59

标签: javascript visual-studio-lightswitch

我正在尝试将当前日期/时间写入SQL中的字段,数据类型为DateTime,在Lightswitch HTML中。

基本上,当用户将任何编辑保存到特定屏幕时,我希望记录日期和时间并在屏幕上显示。

在LS中,我有一个名为DtLastChangedBy的属性。它是SQL中的DateTime列。

我选择AddEditScreen并选择Write Code> before_applyChanges来修改方法。

到目前为止,我尝试过这样的事情......

myapp.AddEditDevice.beforeApplyChanges = function (screen) {
  // Write code here.
  screen.AddEditDevice.DtLastChangeBy
  return Date.now();
};

但我认为我的js非常缺乏=(。

有什么建议吗?我最终还是希望返回登录用户,因此它将显示X用户上次在X时保存此记录。

谢谢!

2 个答案:

答案 0 :(得分:1)

最优雅的方法是使用服务器端'entity_Created'和'entities_Updating'方法。

这可确保为客户端和服务器生成的更新更新字段。它还可以轻松地适应更新用户字段(如帖子末尾所建议的那样)。

要实现此方法,您需要在Device表的设计器屏幕上选择“Write Code”按钮,然后选择相应的“常规方法”选项。

这将允许您将以下c#代码引入'entity_Created'常规方法:

partial void Device_Created()
{
    this.DtLastChangeBy = DateTime.Now;
    this.UserLastChangeBy = this.Application.User.Name;
}

以下是'entity_Updating'的一般方法:

partial void Devices_Updating(Device entity)
{
    entity.DtLastChangeBy = DateTime.Now;
    entity.UserLastChangeBy = this.Application.User.Name;
}

在上面的代码片段中,我使用字段名称“UserLastChangeBy”来镜像您用于DateTime字段的名称。

答案 1 :(得分:0)

我正在使用'答案'这样我就可以发布代码了。我用它来管理浏览屏幕刷新...

myapp.BrowseDevices.Devices_ItemTap_execute = function (screen) {
// Write code here.
myapp.showAddEditDevice(screen.Devices.selectedItem, {
    //beforeShown: function (addEditOrderLines) {
    //addEditOrderLines.OrderLines = screen.OrderLines.selectedItem;
    //},
    afterClosed: function (addEditDevice, navigationAction) {
        if (navigationAction === msls.NavigateBackAction.commit) {
            screen.Devices.refresh();
        }
    }
});

};

如果有更顺畅/优雅的方式来做到这一点,我很想知道!我确定日期问题可以在其他地方修复(?)。

谢谢!