默认情况下,在 Lightswitch 中,当您想要从屏幕列表或 DataGrid 中删除项目时,您可以单击默认提供的删除按钮,或者您可以通过调用“屏幕代码”以编程方式从 VisualCollection 中删除该项目
this.VisualCollection<Entity>.SelectedItem.Delete()
或者
this.VisualCollection<Entity>.DeleteSelcted()
但是,这会将选定的行/实体标记为删除,并在 DataGrid/List 的最左侧列中放置一个“X”。该行对用户仍然可见,虽然这确实反映了流程的事务/异步性质,但对于希望从列表中删除该行的用户来说,这是令人困惑的。例如:
顾客:我删了它为什么还在...
我:你注意到左边的x了吗?
客户:哦……嗯……
我:是的……你需要点击保存才能将更改保存到数据库中。
顾客:……我会假装这样说有道理。
我:....那是个好孩子....
更好的方法是在调用 delete 时从 VisualCollection 中删除该项目,然后静默保持更改。由于异步性质,没有烦人的等待/加载弹出窗口。
我试过打电话this.VisualCollection<Entity>.RemoveSelected()
,但结果是LightSwitchException - Current item cannot be removed
我曾尝试在调用后保存记录,Delete()
但这会将所有更改保存在屏幕上,并且还会显示上述弹出窗口,并且不是良好的用户体验。