【问题标题】:Create domino view dynamically in XPages在 XPages 中动态创建多米诺视图
【发布时间】:2014-07-11 20:07:04
【问题描述】:

我想知道是否可以单击 XPage 中的按钮并动态创建 Domino 视图,然后将其显示在同一页面上的面板控件中。我想这样做的原因是因为我有一个分类视图,我不想通过使用全文搜索丢失类别数据。所以我正在考虑动态创建一个新视图,并将我的搜索参数(如结束日期或开始日期)传递到视图选择公式中。

有可能吗?也欢迎任何其他替代解决方案。

【问题讨论】:

    标签: xpages lotus-notes lotus-domino xpages-ssjs


    【解决方案1】:

    是的,你可以,但你不想这样做。 Domino 视图在数据库中占用空间,并且在第一次使用时需要相当长的时间。所以你最终会得到很多视图占用空间,并且需要在删除后调整数据库空间。您的响应时间会很长。

    Notes 视图中显示的类别是no web interaction pattern,因此您可能想要解决实际上不应该存在的问题。

    Domino 应用程序的首选方法是导航/向下钻取搜索。但是您可以执行 FTSearch,将您的类别添加到搜索参数中,并将结果呈现在重复控件而不是视图控件中。在那里,您可以更好地控制外观。

    【讨论】:

    • 你也可能有问题,因为视图索引不会建立。充其量它会等待并且可能超时/什么都不返回。
    【解决方案2】:

    无论它是否是最佳解决方案,关于即时创建视图的直接问题的答案是肯定的:Database 类有几个“createView”方法允许您完全从头开始创建新视图或基于命名的其他视图。从那里,您可以在创建的视图中使用“setSelectionFormula”和“createColumn”方法来构建您想要的内容。你不能用这些方法做所有事情,但它可能就足够了。

    您可能会遇到的一个问题是 ACL 访问权限:您需要对数据库具有设计者权限,而普通用户很可能没有这些权限。如果您使用 sessionAsSigner 对象来获取数据库的签名者版本(例如,“var signerDB = sessionAsSigner.getDatabase(database.getServer(), database.getFilePath())”),您可以从那里开始工作。在我的脑海中,我不记得您是否还必须将 ACL 的最后一个选项卡上的“最大 Internet 访问权限”设置也设置为 Designer,但您可以。

    【讨论】:

    • sessionAsSigner 可以克服 ACL - 但动态创建视图不是一个好主意
    • ACL 不是问题——您可以使用 sessionAsSigner 或代理运行代表... 性能是问题。对于大数据用户可以等待几分钟来索引视图。在最坏的情况下(涉及信号量)它可能会破坏整个服务器。
    【解决方案3】:

    我假设您指的是根据类别选择文档时存在的问题。这是我觉得非常烦人的事情,我希望可以打开和关闭它。这对嵌入式视图有意义,但对其他方面没有意义。

    我为解决这个问题所做的就是在下一列中包含类别值。这样,即使是平面视图,仍然可以看到文本。

    或者,您也可以考虑使用中继器控件并创建自己的信息呈现方式。这将用于代替(动态)ViewPanel 控件。然后,您可以以任何您想要的方式呈现信息,只要它在视图行集中返回即可。

    编程愉快!

    【讨论】:

      猜你喜欢
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多