【问题标题】:Partial update dynamic view on CustomControl | XPagesCustomControl 上的部分更新动态视图 | XPages
【发布时间】:2018-08-22 21:40:19
【问题描述】:

我有一个带有一个 XPage 的应用程序。它有这些自定义控件(cc):

ccHeader
ccMenu
ccContent
ccFooter

自定义控件ccContent 有一个组合框,其中包含sessionScope 中的视图列表和来自XPages 扩展库的动态视图面板。此组合框有一个事件OnChange 定义为部分更新动态视图。

我需要什么?:带有视图列表的组合框将被删除,之后我需要将此部分更新功能分配给位于ccMenu 自定义控件上的五个链接。所以,我点击ccMenu中的链接,它会返回一些视图名称,将其分配给动态视图并进行部分更新。

如何在ccMenu获取这个动态视图的id来调用部分更新?

【问题讨论】:

  • 请发布代码示例。我不明白:你能改写你的最后一句话吗?

标签: xpages lotus-notes partial-views


【解决方案1】:

假设您的意思是您希望有一种简洁的方式让按钮知道更改时要部分刷新的区域:

您可以按照“viewRefreshId”的行向 ccMenu 控件添加一个属性,并传入要刷新的区域的 ID,因此您最终会得到一个这样的按钮:

<xp:button id="viewChanger1" value="View 1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="${compositeData.viewRefreshId}">
        <xp:this.action><![CDATA[#{javascript: viewScope.selectedView = 'View 1' }]]></xp:this.action>
    </xp:eventHandler>
</xp:button>

现在,有一个问题是您是否应该尝试从主 XPage 的另一个 CC 中包含的内容传递一个 ID,我尽量避免这种情况 - 它可能会起作用,但它有点混乱。我倾向于构建类似的东西,以便要刷新的部分直接在 XPage 上(也就是说,我不使用“内容”自定义控件),所以我最终会得到这样的结果:

<xc:viewSelector viewRefreshId="dynamicViewContainer"/>

<xp:div id="dynamicViewContainer">
    <xe:dynamicView>
        <xe:this.data>
            <xp:dominoView var="view1" viewName="#{viewScope.selectedView}"/>
        </xe:this.data>
    </xe:dynamicView>
</xp:div>

额外的容器 div 来自我前段时间刷新动态视图直接导致渲染问题的经验,但我不知道情况是否仍然如此(或者我是否遇到了其他问题)。

【讨论】:

  • 非常感谢。一切都像你描述的那样工作。我只是将内容移动到主 xpage。关于额外的 div - 我试过没有它 - 一切都很好。渲染有任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多