2

我正在使用 Visual Studio 2013 和 LightSwitch。我想出了如何创建删除记录按钮并且效果很好。我唯一的问题是在显示所有记录的主页上。

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

这是我正在使用的 C# 示例,只要选择了一条记录,它就可以正常工作。

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

2 回答 2

2

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

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

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

于 2014-06-05T09:52:56.620 回答
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 字段的注释行,以达到您需要的结果。

于 2014-03-25T20:35:05.657 回答