在Cuba Platform中取消未保存的更改消息

时间:2016-05-26 11:10:17

标签: cuba-platform

我有一个包含作者的查找屏幕,我在AuthorsBrowse :: AbstractLookup中使用init中的自定义查询来加载数据。我操纵了我想要显示的数据,但不应保存更改。

如果我关闭标签,我会收到此消息对话框:

您有未保存的更改 您想丢弃未保存的更改吗?

如何取消此消息?

2 个答案:

答案 0 :(得分:4)

如果更改了任何数据源,则会显示此消息。

如果要抑制消息,则需要添加到数据源(已更改)属性<collectionDatasource id="authorsDs" class="com.haulmont.workshop.core.entity.Author" view="_local" allowCommit="false"> <query> <![CDATA[ select e from ws$Author e where e.status = 10 ]]> </query> </collectionDatasource> ,如下所示:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(new  AdapterView.OnItemSelectedListener (){

  public void onItemSelected(AdapterView<?> parent, View view, 
        int pos, long id) {
    // An item was selected. You can retrieve the selected item using
    // parent.getItemAtPosition(pos)
}

public void onNothingSelected(AdapterView<?> parent) {
    // Another interface callback
}
});

答案 1 :(得分:4)

如果屏幕实现Window.Committable界面,您还可以对屏幕上未保存的更改行为实施更精细的控制。该接口包含isModified()方法,该方法返回一个布尔值。

AbstractEditor已实现此接口,其isModified()如下所示:

@Override
public boolean isModified() {
    return getDsContext() != null && getDsContext().isModified();
}

您可以在浏览器屏幕中实现Window.Committable,只返回false或在isModified()中写一些逻辑。