我的30多个Notes视图中是否需要单独的XPage?

时间:2012-12-14 15:49:36

标签: xpages

我正在努力将XPage前端放在具有许多视图的现有Notes应用程序上。现在,我正在一个单独的NSF中从现有的App / Data构建XPage和自定义控件(CC)。 (不是要求,但是如果它影响你的答案,我会提供这个。)

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

此外,我希望在XPage上提供一个左侧菜单/视图列表,它将(1)允许通过点击选择视图,(2)直观地指示选择了哪个视图(再次,定位可重用性...不每个视图的菜单。)

(Notes App parallel:左框架中有轮廓的框架集和用于加载从轮廓中选择的视图的内容框架。)

任何建议,资源,链接,指针等都将非常感激。

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

感谢您帮助一位显而易见的新XPage开发人员。

4 个答案:

答案 0 :(得分:3)

您可以使用网址参数来控制要显示的视图。 为此,您可以创建一个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 参数以使用另一个数据库中的视图。 其他属性也可以计算(分类,排序等)。

答案 1 :(得分:2)

答案 2 :(得分:2)

考虑使用重复控件而不是视图面板。这为您提供了表示数据的完全灵活性,而不是受限于视图面板的行为和假设。这样可以更轻松地设计一个足够灵活的单个页面来显示数据的任何子集。

答案 3 :(得分:0)

最好的解决方案是创建2个服务&amp;一页:

  1. 创建服务以将视图内容作为JSON返回(通过视图属性或代理或Web服务或xPage,任何您最适合的方式)
  2. 创建服务以返回左侧菜单/视图列表为JSON
  3. 使用javascript核心创建xPage,该核心将从第1点和第2点加载数据并构建UI。 jQuery&amp; jQuery UI可以帮到你。
  4. 这个解决方案非常灵活,您可以在成长中获得经验