我正在尝试将当前日期/时间写入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时保存此记录。
谢谢!
答案 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();
}
}
});
};
如果有更顺畅/优雅的方式来做到这一点,我很想知道!我确定日期问题可以在其他地方修复(?)。
谢谢!