我对我正在维护的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环境的人能够将我指向另一个可能出现此问题的地方,并提供一些关于在哪里查看或进一步排除故障的提示。 我目前无法看到权限组如何显着影响翻转开关控制行为
答案 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值,并且只有在用户更改它们时才会更改。
另外
有两个视图可用于翻转开关以及是/否和开/关,可以在所选翻转开关的属性上访问:
要确保一件事是使用数据 绑定属性来指定值,而不是像通常在表单应用程序中那样指定名称。