2016-02-09 6 views
0

Я пытаюсь записать текущую дату/время в поле SQL, тип данных - DateTime, в HTML Lightswitch.Вставить DateTime.now() Lightswitch HTML

В принципе, когда пользователь сохраняет какое-либо редактирование на конкретном экране, я хотел бы, чтобы дата и время записывались и показывались на экране.

В LS у меня есть свойство DtLastChangedBy. Это столбец DateTime в SQL.

Я выбираю AddEditScreen и выбираю Write Code> before_applyChanges для модификации метода.

До сих пор я пытался что-то вроде этого ...

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

Но я думаю, что мои JS очень не хватает = (.

Любые предложения? Я в конечном счете хотел бы вернуться вошедшего в пользователя, так что он будет показывать X пользователь последнего сохранения записи во время X.

Спасибо!

ответ

1

самый элегантный подход будет использовать на стороне сервера «entity_Created» и 'entities_Updating'.

Это гарантирует, что поля будут обновлены для обновлений, созданных клиентом и сервером. Он также легко адаптирует обновление поля пользователя (как предлагается в конце вашего сообщения).

Для реализации этого подхода вам необходимо выбрать кнопку «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; 
} 

В выше snippets Я использовал имя поля «UserLastChangeBy», чтобы отразить имя, которое вы использовали для поля DateTime.

+0

Это работало как шарм. Большое спасибо. Я считаю, что Application.User.Name будет извлекать зарегистрированного пользователя, как только я настрою пользователей для проверки подлинности с помощью форм. Прямо сейчас, при отладке, он возвращает TestUser. На данный момент у меня нет пользователей. Кроме того, я заметил, что время правильное, когда экран создан, но неправильно при применении изменений. Мне нужно перезагрузить всю страницу за время, чтобы снова показать правильное. – CreedC

+0

Ваши ожидания касаются имени пользователя. В начале даты, каким образом это неверно, когда вы применяете изменения? Например, отображается ли оно как пустое или это час? –

+0

Когда я применяю изменения на экране, страница переходит к экрану просмотра. Если я вернусь обратно к тому же предмету, который только что редактировал, время уходит. Я просто сделал это в 7:29 утра 10-го числа, а отметка времени - 1:29:14 утра 10-го. Спасибо! – CreedC

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(); 
     } 
    } 
}); 

};

Если есть более гладкий/элегантный способ сделать это, я хотел бы узнать! Я уверен, что проблема с датой может быть исправлена ​​где-то в другом месте (?).

Спасибо!

+0

Возможно, более целесообразно опубликовать это как отдельный вопрос, который должен дать ему больше видимости. –

+0

Я думаю, вы можете обойти это, установив значение contentItem на экране с помощью javascript, прежде чем отправлять его на сервер. Это должно дать вашему клиентскому элементу «правильное» значение, и ответ, который дал Крис, перезапишет значение, когда оно попадет на сервер. Разница будет незначительной, и при следующем запуске запроса, который извлекает данные с сервера, будет отображаться значение на стороне сервера. Если вам нужны детали, просто отправьте еще один вопрос. – BobbyJ