我有一个包含作者的查找屏幕,我在AuthorsBrowse :: AbstractLookup中使用init中的自定义查询来加载数据。我操纵了我想要显示的数据,但不应保存更改。
如果我关闭标签,我会收到此消息对话框:
您有未保存的更改 您想丢弃未保存的更改吗?
如何取消此消息?
答案 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()
中写一些逻辑。