xpages嵌入式视图或视图面板

xpages嵌入式视图或视图面板,xpages,xpages-extlib,Xpages,Xpages Extlib,我知道这是一个非常简单的问题,但我正在尝试查看视图面板(从容器控件拖动)和嵌入式视图之间的区别 如何在xpages上添加嵌入式视图 或者这两项是同一项 我问这个问题的原因是:我的xpage上有一个视图面板(我认为它就像clasic lotusnotes编程中的嵌入式视图),其中列出了一些文档。第一列根据UNID文档进行分类 我注意到,如果我再次编写另一个文档,此视图包含所有以前的文档,以及所有已分类的UNID。视图面板不是空的 在lotus notes编程中: 如果我有一个主窗体和一个带有@te

我知道这是一个非常简单的问题,但我正在尝试查看视图面板(从容器控件拖动)和嵌入式视图之间的区别

如何在xpages上添加嵌入式视图

或者这两项是同一项

我问这个问题的原因是:我的xpage上有一个视图面板(我认为它就像clasic lotusnotes编程中的嵌入式视图),其中列出了一些文档。第一列根据UNID文档进行分类

我注意到,如果我再次编写另一个文档,此视图包含所有以前的文档,以及所有已分类的UNID。视图面板不是空的

在lotus notes编程中:

如果我有一个主窗体和一个带有
@text(@DocumentUniqueId)
的计算文本字段,以及一些用于组合另一个窗体的按钮(当然,当单击按钮时,我保存了主窗体以获取UNID),并且此窗体与前一个窗体具有相同的文本字段名称-我将UNID传递给第二个窗体。如果主窗体包含一个嵌入式视图,其中列出了从第二个窗体保存的所有文档,那么我将使用第一列分类并隐藏第二个窗体的字段名(其中将包含UNID)。如果保存并关闭第一个主窗体,然后编写另一个主窗体,则嵌入的视图不会列出以前保存的文档

这个视图已经创建好了

我确实在myxpage中拖放了此视图。我在myxpage中有一个显示对话框的按钮。这里声明了一个数据源,该对话框包含一些字段。在主xpage(其中定义了另一个数据源)中,有一个计算字段,它接受文档的UNID。在单击对话框之前,我保存第一个数据源,以将值UNID传递给对话框中的其他字段

我从对话框中保存数据源并关闭对话框,然后视图面板(上面显示的LotusNotesClassic视图)列出文档。如果我关闭主xpage(如果是新的,则保存它),然后打开另一个主文档,则该视图不是空的,它包含以前的文档列表。(如果xspDoc是新的,我也试图隐藏它。但是当我尝试添加其他文档时。从对话框中,视图面板还列出了上一个文档中的上一个文档,即使unid是不同的)


提前谢谢。

首先,这不是一个愚蠢的问题

我假设您使用的是一个自我实现的父响应系统,并且有一个按父UNID排序的视图。在视图面板的数据源下,找到“按类别名称筛选”选项。这里计算您正在搜索的UNID值或类别值

步骤:

  • 确保背景视图是分类的(升序是最好的,尽管我怀疑它是否必要)
  • 将视图控件(我最喜欢的是dynamicViewPanel)拖到xpage上
  • 在“属性/数据”下,有一个位置可以计算要显示的类别的值。如果要精确匹配,请选中精确匹配复选框
  • 如果键入的类别值错误或不存在该值,则不会显示任何文档。
    如果输入空值,所有文档都会显示(至少在我记得的测试中)
    如果返回文档,则分类列将自动隐藏。

    编辑

    如果从字段中读取值,可以使用以下代码:

    xspDoc.getItemValueString("fld");
    
    如果要基于UNID进行搜索,请再次隐藏视图面板(如果文档是新的)。如果尚未设置该值,请同时隐藏面板

    如果有两个自定义控件,即使在第二个控件中嵌入了一个自定义控件,也不能让一个自定义控件轻松访问另一个控件中的数据源值。我确信有一些方法可以让它工作,但是在这种情况下,使用viewScope变量来访问这些值,还可以使用onLoad、onChange或onSave事件来更新viewScope变量。通过将结果打印到服务器日志或其他字段,确保结果不为null或空

    问题编辑/扩展后的最终编辑

    这些是我将采取的步骤来完成你所描述的

  • 您有父文档XPage。插入此Xpage的所有字段
  • 将dynamicViewPanel拖到XPage上。如果parentDoc是新的,那么隐藏。(理论上这可能是一个自定义控件,但是如果您遇到问题,为了解决问题,请尝试不使用它。)
  • 将dynamicViewPanel数据源设置为IgnoreRequestParams
  • 计算数据源并设置“按类别名称筛选”筛选器。计算时,为了方便和排除故障,请将此值打印到服务器或其他日志机制。您可以稍后删除它
  • 验证是否在对话框中创建的文档中插入了正确的UNID/值
  • 如果使用范围变量来保存筛选器值,请确保使用的是viewScope,而不是appliationScope或sessionScope
  • 如果使用的是自定义控件和标准参数(不是scopedVars),请验证compositeData变量是否正在使用日志或服务器打印进行更新
  • 考虑将对话框属性/AllProperties/basics/refreshOnShow设置为true
  • 使用dialogOpen操作的部分刷新选项,测试完全刷新与部分刷新
  • 请记住将您在对话框中创建的文档的ignoreRequestParams设置为true
  • 考虑将在对话框中创建的新文档数据源设置为请求范围
  • 当然,请考虑并测试XPGE上定义的所有数据源,而不是在这里,有些在这里。
  • 确认您错误地从主文档而不是新对话框文档中获取了UNID的值
  • 这些都是