我知道这是一个非常简单的问题,但我正在尝试查看视图面板(我从容器控件中拖动)和嵌入视图之间的区别。
如何在我的xpages上添加嵌入式视图?
或者两个项目是同一个。
我之所以会问这个问题:我的xpage上有一个视图面板(我认为它就像是一个嵌入式视图中的clasic lotus notes编程),我在其中列出了一些文档。第一列根据UNID文件进行分类。
我注意到如果我再次撰写另一个文档,此视图包含所有以前的文档,并且所有UNID都已分类。视图面板不为空。
在莲花笔记编程中:
如果我有一个主表单和一个带有@Text(@DocumentUniqueId)
的计算文本字段和一些用于组成另一个表单的按钮(当然,单击按钮时我保存了主表单以获取UNID),这个表单有与前一个相同的文本字段名称 - 我将UNID传递给第二个表单。如果主窗体包含一个嵌入视图,其中列出了从第二个窗体保存的所有文档,我将使用第一列分类并隐藏第二个窗体中的字段名称(将包含UNID)。如果我保存并关闭第一个主要,然后我将组成另一个主窗体,嵌入视图不会列出已保存的先前文档。
嗯,这个视图已经创建了。
我确实在myxpage中拖放了这个视图。我在myxpage中有一个按钮,显示一个对话框。这里声明了一个数据源,该对话框包含一些字段。在主xpage(其中定义了另一个数据源)中,有一个计算字段,它接受文档的UNID。在我单击对话框之前,我保存了第一个数据源,将值UNID传递给对话框中的其他字段。
我从对话框中保存数据源&关闭对话框,然后视图面板(这是上面提到的Lotus notes经典视图)列出了doc。如果我关闭主xpage(如果是新的,则保存它),然后打开另一个主文档,视图不为空,它包含以前的文档列表。 (我试图隐藏它,如果xspDoc是新的。但是当我尝试从对话框中添加其他文档时,视图面板也会列出以前文档中的先前文档。,即使UNID是不同的)
提前致谢。
答案 0 :(得分:1)
为了解释这一点,最好考虑一下Notes Client中的视图和嵌入视图是什么。视图确定外观,如视图面板,默认情况下将显示选择条件找到的所有文档。因此,在这种情况下,可用的文档对应于绑定到基础视图的dominoView数据源,没有定义其他条件。
嵌入视图仍然使用视图来确定外观,但不会显示第一列(它实际上是嵌入视图的属性"控制"在Notes客户端中)。在“视图”面板中,您可以选择显示哪些列,因此您需要在“视图”面板上自行编码,您可以在其中选择要显示的列。嵌入视图还具有定义单个类别的属性。但是视图面板和其他重复容器(如数据表和重复控制)不会限制数据源可用的数据 - dominoView或者例如dominoView。 ViewEntryCollection用于除View Panel之外的任何其他内容。所以你设置了过滤器。
但是,新文档没有UNID,因此无法限制显示的内容。相反,我认为一个好方法是设置可见性,以便只有在不新文档时才会显示视图面板。如果您在保存后完全重新加载页面,或者已呈现,则可以使用已加载。
答案 1 :(得分:0)
首先,这不是一个愚蠢的问题。
我假设您正在使用自我实现的父响应系统,并且具有按父UNID排序的视图。在视图面板的数据源下,找到“按类别名称过滤”选项。计算您要搜索的UNID值或类别值。
步骤:
如果您输入的类别值不正确或者值不存在,则不会显示任何文件
如果你输入一个空值,则显示所有文件(至少在我能记住的测试中)
如果返回文档,则会自动隐藏分类列。
修改强>
如果您正在读取字段中的值,则可以使用以下代码:
xspDoc.getItemValueString("fld");
如果您正在基于UNID进行搜索,请再次隐藏viewPanel,如果文档是新的。如果尚未设置该值,则还要隐藏面板。
如果您有两个自定义控件,即使第二个嵌入了自定义控件,也不能轻易让一个自定义控件访问另一个自定义控件中的数据源值。我确信有办法将其设置为工作,但在这种情况下,使用viewScope变量来访问值,并可能使用onLoad,onChange或onSave事件来更新viewScope变量。确保通过将结果打印到服务器日志或其他字段来验证结果不为null或为空。
问题编辑/扩展后的最终编辑
这些是我要采取的措施来完成您所描述的内容。
这些是我现在能够想到的所有提示,几乎按照我尝试的顺序。如果这没有帮助,那么我怀疑有一个你不包括在内的这个难题这个问题。请记住,尽量保持简单。你可以过度思考事物,让事情变得比他们需要的更难。