LightSwitch скрывает кнопку удаления, пока запись не будет выбрана

Я использую Visual Studio 2013 и LightSwitch. Я понял, как создать кнопку удаления записи, и она прекрасно работает. Единственная проблема у меня есть на моей главной странице, где показаны все записи.

Когда страница загружается, кнопки «Просмотр и редактирование» появляются только после выбора записи. Добавить и Удалить видны все время. Проблема в том, что хотя функция удаления работает, она работает только при выборе записи. Итак, если страница загружается, и вы нажимаете «Удалить», она выдает ошибку. Я хотел бы скрыть кнопку удаления, пока запись не будет нажата. По умолчанию кнопки «Редактировать» и «Просмотр», которые создает Lightswitch, делают это, однако, поскольку вам нужно написать свою собственную функцию «Удалить», я не понял, как это сделать.

Вот пример С#, с которым я работаю, который отлично работает, если выбрана запись.

myapp.BrowseGiftRegistries.DeleteRegistry_execute = function (screen) {
    screen.GiftRegistries.deleteSelected();
    return myapp.commitChanges().then(null, function fail(e) {
        myapp.cancelChanges();
        throw e;
    });
};

person Sean O'Connor    schedule 14.03.2014    source источник
comment
Пожалуйста, отредактируйте тег. Я считаю, что это С#, а не С   -  person neeru    schedule 19.03.2014


Ответы (2)


В методе _canExecute() кнопки удаления просто поместите следующий код:

myapp.MyScreen.DeleteButton_canExecute = function (screen) {
    return screen.GiftRegistries.selectedItem != null;
};

Вы также можете контролировать, будет ли кнопка видна при отключении, установив или сняв флажок «Скрыть, если отключено» в свойствах выбранной кнопки.

person novascape    schedule 05.06.2014

Вы должны сделать это на стороне клиента, используя javascript (похоже, вы предоставили код javascript).

Например, если у вас есть кнопка удаления с именем «DeleteRegistry»:

Добавьте приведенный ниже код в файл BrowseGiftRegistries.lsml.js.

myapp.BrowseGiftRegistries.created = function (screen) {
    screen.findContentItem('DeleteRegistry').isEnabled = false;
    //screen.findContentItem('DeleteRegistry').isVisible = false;
};

// Function created by clicking List( Gift Registries)->properties window->
// ->Actions->Item tap->None->edit execute code

myapp.BrowseGiftRegistries.GiftRegistry_ItemTap_execute = function (screen) {
   screen.findContentItem('DeleteRegistry').isEnabled = true;
   //screen.findContentItem('DeleteRegistry').isVisible = true;
};

// Modification of your function
myapp.BrowseGiftRegistries.DeleteRegistry_execute = function (screen) {
    screen.GiftRegistries.deleteSelected();

    screen.findContentItem('DeleteRegistry').isEnabled = false;
    //screen.findContentItem('DeleteRegistry').isVisible = false;

    return myapp.commitChanges().then(null, function fail(e) {
        myapp.cancelChanges();
        throw e;
    });
};

Вы можете заменить строку, содержащую поле isEnabled, на закомментированную строку, содержащую поле isVisible, чтобы получить нужный вам результат.

person rapshan sulimi    schedule 25.03.2014