MS Visual Studio Lightswitch flipswitch控件有时会显示默认值

时间:2017-04-03 03:38:30

标签: visual-studio-2013 lightswitch-2013 jquery-mobile-flipswitch

我对我正在维护的LightSwitch应用程序有一个有趣的问题,存在混淆的空间,因此将尝试及详细解释并回答任何澄清问题。

我有一个LightSwitch AddEdit屏幕,使用默认的' Flip Switch'控制表中的布尔值,设置为是​​/否选项(因此显示是或否作为值,实际上保存0或1),在创建新条目时,控件显示“否”和“否”。默认情况下。问题在于,取决于用户对控件的权限有何不同,可以是:

1)预期/期望的行为:翻转开关设置为“否”'默认情况下,如果保存屏幕而未触摸它,则“不”。保存到数据库(用户看到的内容和保存的内容是一致的,翻转开关永远不会为NULL)。

2)意外行为:翻转开关看起来设置为“否”,但是当用户尝试保存屏幕时,会收到警告"错误:无法继续。页面上有验证错误"因为存在不允许NULL的布尔值(相关的翻转开关突出显示为'此字段是必需的')用户可以将翻转开关控制切换为是并返回否,此时屏幕将保存(触摸控件似乎将其设置为NULL的值),但令人不安的是,允许NULL的其他翻转开关被保存为NULL而不是' No'它们在屏幕上显示,这是令人困惑和有问题的,并且一旦我修复了这个错误,将要求用户重新输入所有NULL条目。

我到目前为止所做的故障排除表明,行为取决于用户设置的LightSwitch访问控制权限,如果他们在一个组(SystemAdministrator)中,他们在另一个组织中获得行为1(DatabaseOperators),他们得到2。 / p>

它似乎也取决于成为一个'添加'而不是编辑'如果将新行添加为SystemAdministrator,则数据将作为行为添加1.如果编辑现有条目,则将行为2作为两个权限。

我测试了用于过滤此表的数据源(TableName_CanRead,TableName_CanWrite,TableName_CanInsert,TableName_CanUpdate,TableName_CanDelete,TableName_CanExecute,TableName_Filter)的权限的VB代码,因为这似乎是一个可能的差异点,它确实< em> not 改变行为。

我希望更熟悉LightSwitch环境的人能够将我指向另一个可能出现此问题的地方,并提供一些关于在哪里查看或进一步排除故障的提示。 我目前无法看到权限组如何显着影响翻转开关控制行为

1 个答案:

答案 0 :(得分:0)

我认为您的方案的最佳做法如下:

在屏幕上创建代码块

,为每个开关使用以下代码:

myapp.SCREENNAME.created = function (screen) {
    if (screen.TABLENAME.theFlipSwitchA == null) {
        screen.TABLENAME.theFlipSwitchA = false;
    }

    if (screen.TABLENAME.theFlipSwitchB == null) {
        screen.TABLENAME.theFlipSwitchB = true;
    }
}

这将确保在开始时将空值替换为正确的TRUE或FALSE值,并且只有在用户更改它们时才会更改。

另外

有两个视图可用于翻转开关以及是/否和开/关,可以在所选翻转开关的属性上访问:

enter image description here

要确保一件事是使用数据 绑定属性来指定值,而不是像通常在表单应用程序中那样指定名称。

enter image description here