LightSwitch隐藏删除按钮,直到选中记录

时间:2014-03-14 15:09:41

标签: c# visual-studio-lightswitch lightswitch-2013

我正在使用Visual Studio 2013和LightSwitch。我想出了如何创建一个删除记录按钮,它工作得很好。我唯一的问题是在我的主页面上显示所有记录。

当页面加载时,The View&仅在选择记录后才会显示编辑按钮。添加和删​​除始终可见。问题是,虽然删除功能有效,但它仅在选择记录时有效。因此,如果页面加载并且您单击删除它就会出错。我想隐藏删除按钮,直到单击一条记录。默认情况下,Lightswitch创建的编辑和视图按钮执行此操作,但是由于您必须编写自己的删除功能,所以我还没有想出如何执行此操作。

这是一个C#我正在使用的例子,如果选择了一个记录,它可以正常工作..

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

2 个答案:

答案 0 :(得分:2)

在删除按钮的_canExecute()方法中,只需输入以下代码:

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

您还可以通过选中或取消选中所选按钮的属性中的“隐藏,如果已禁用”复选框来控制按钮在禁用时是否可见。

答案 1 :(得分:0)

你应该在客户端使用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字段的注释行,以达到您需要的结果。