0

我正在努力将 XPage 前端放置在具有许多视图的现有 Notes 应用程序上。现在,我在与现有应用程序/数据不同的 NSF 中构建 XPage 和自定义控件 (CC)。(不是要求,但我提供此功能以防影响您的回答。)

计划维护时,我希望构建最少的可重用 XPage/CC。我意识到我可能需要为每个底层 Notes 视图使用单独的 CC,但我希望重用一个或几个 XPage,并在运行时决定应该在“内容”面板/div 中显示什么视图。(“计算自定义控件”?)

此外,我希望在 XPage 上提供一个左侧菜单/视图列表,这将 (1) 允许通过单击选择视图和 (2) 直观地指示选择了哪个视图(同样,目标是可重用性......不是用于每个视图。)

(Notes App 并行:一个框架集在左框架中有一个大纲,一个内容框架用于加载从大纲中选择的视图。)

任何建议、资源、链接、指针等将不胜感激。

另外,在您的回复中,请假设我无法使用扩展库。

感谢您帮助一位显然是新 XPages 开发人员。

4

4 回答 4

3

您可以使用 URL 参数来控制将显示哪个视图。为此,您可以创建一个 XPage,其中的列计算如下:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

<xp:viewPanel rows="30" id="viewPanel1">
    <xp:this.data>
        <xp:dominoView var="view1" viewName="All"></xp:dominoView>
    </xp:this.data>
    <xp:this.facets>
        <xp:pager partialRefresh="true" layout="Previous Group Next"
            xp:key="headerPager" id="pager1">
        </xp:pager>
    </xp:this.facets>

    <!-- Column 1 -->
    <xp:viewColumn id="viewColumn1"
        columnName="#{javascript:view1.getColumnNames().get(0)}">
        <xp:this.rendered><![CDATA[#{javascript:view1.getColumnCount() > 0}]]></xp:this.rendered>
        <xp:viewColumnHeader id="viewColumnHeader1"
            value="#{javascript:view1.getColumnNames().get(0)}">
        </xp:viewColumnHeader>
    </xp:viewColumn>

    <!-- Column 2 -->
    <xp:viewColumn id="viewColumn2"
        columnName="#{javascript:view1.getColumnNames().get(2)}">
        <xp:this.rendered><![CDATA[#{javascript:view1.getColumnCount() > 1}]]></xp:this.rendered>
        <xp:viewColumnHeader id="viewColumnHeader2"
            value="#{javascript:view1.getColumnNames().get(2)}">
        </xp:viewColumnHeader>
    </xp:viewColumn>

</xp:viewPanel>

</xp:view>

现在您可以使用 URL 打开 XPage

http://example.com/yourdb.nsf/view.xsp?viewName=[NAME OF THE VIEW]

此外,您可以添加databaseName参数以使用来自另一个数据库的视图。也可以计算其他属性(分类、排序等)。

于 2012-12-14T16:48:56.070 回答
2

考虑使用重复控件而不是视图面板。这使您可以充分灵活地表示数据,而不是受限于视图面板的行为和假设。这使得设计一个足够灵活的页面来显示数据的任何子集变得更加容易。

于 2012-12-15T04:44:59.057 回答
0

最好的解决方案是创建 2 个服务和一个页面:

  1. 创建服务以将视图内容返回为 JSON(通过视图属性或代理或 Web 服务或 xPage,任何您填写的最适合您的内容)
  2. 创建服务以将左侧菜单/视图列表返回为 JSON
  3. 使用 javascript 核心创建 xPage,该核心将从点 1 和 2 加载数据并构建 UI。jQuery & jQuery UI 会帮助你。

这个解决方案将是灵活的,你会长大你的经验

于 2012-12-17T20:40:50.197 回答