XPages 重复控件和按钮
XPages repeat control and button
我在显示项目摘要的 XPage 上有一个重复控件。要查看其他详细信息,用户单击一个按钮(在 repeat 内),这会将 viewScope 变量设置为 repeat 的 rowIndex,然后打开一个模式以显示 remeaining 项目详细信息。
我无法通过按钮设置 viewScope 变量。就像它无法获得 rowIndex 的句柄。
我有一个计算文本字段设置为在重复开始时显示 rowIndex(效果很好)。
我显然缺少一些基本知识。如有任何帮助,我们将不胜感激。
相关源码如下:
<xp:repeat id="repeat1" rows="50" var="entry" indexVar="rowIndex">
<xp:this.value><![CDATA[#{javascript:var m = sessionScope.assetMap;
if(m!=null){
m.entrySet()
}}]]></xp:this.value>
<div>
<small>
<label>
<xp:text escape="true" id="num">
<xp:this.value><![CDATA[#{javascript:var itemNum:Number = parseInt(rowIndex + 1);
itemNum.toPrecision(0);}]]></xp:this.value>
</xp:text>
.  Description:   
</label>
<xp:text escape="true" id="desc">
<xp:this.value><![CDATA[#{javascript:@Word(entry.getValue(),"~",3);}]]> </xp:this.value>
</xp:text>
</small>
</div>
<br></br>
<div>
<xp:button type="button" value="Details ..." id="button2">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:try{var itemNum:Number = parseInt(rowIndex + 1);
viewScope.currentItem = itemNum.toPrecision(0);
}catch(e) {
requestScope.errstatus = e.toString();}}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
2015 年 2 月 4 日更新:
我已将问题隔离到自定义控件的呈现 属性。如果我不使用渲染的 属性.
,代码就可以工作
我的 XPage (CSJS) 的 onCLientLoad 中的代码是:
$(window).on('load resize', function(){
var screenWidth = $(window).width();
var sDevice = '';
switch(true){
case (screenWidth < 768):
sDevice = 'mobile';
break;
case (screenWidth < 922):
sDevice = 'tablet';
break;
case (screenWidth >= 922):
sDevice = 'desktop'
}
XSP.partialRefreshPost( '#{id:pnlList}', {params: {'sDevice': sDevice}} );
});
我在 XPage 中的自定义控件的来源 属性 是:
<xp:panel rendered="#{javascript:param.sDevice == 'mobile'}">
<xc:ccSYS_AppLayoutReq_p xp:key="panelContentFacet">
<xp:this.facets>
<xc:cc_cartracking_p xp:key="contentFacet"></xc:cc_cartracking_p>
</xp:this.facets>
</xc:ccSYS_AppLayoutReq_p>
</xp:panel>
谢谢,
段
您必须在按钮中设置选项 "Set partial execution mode" execMode="partial"
。
在您同事的问题中寻找完整答案
我在显示项目摘要的 XPage 上有一个重复控件。要查看其他详细信息,用户单击一个按钮(在 repeat 内),这会将 viewScope 变量设置为 repeat 的 rowIndex,然后打开一个模式以显示 remeaining 项目详细信息。
我无法通过按钮设置 viewScope 变量。就像它无法获得 rowIndex 的句柄。
我有一个计算文本字段设置为在重复开始时显示 rowIndex(效果很好)。
我显然缺少一些基本知识。如有任何帮助,我们将不胜感激。
相关源码如下:
<xp:repeat id="repeat1" rows="50" var="entry" indexVar="rowIndex">
<xp:this.value><![CDATA[#{javascript:var m = sessionScope.assetMap;
if(m!=null){
m.entrySet()
}}]]></xp:this.value>
<div>
<small>
<label>
<xp:text escape="true" id="num">
<xp:this.value><![CDATA[#{javascript:var itemNum:Number = parseInt(rowIndex + 1);
itemNum.toPrecision(0);}]]></xp:this.value>
</xp:text>
.  Description:   
</label>
<xp:text escape="true" id="desc">
<xp:this.value><![CDATA[#{javascript:@Word(entry.getValue(),"~",3);}]]> </xp:this.value>
</xp:text>
</small>
</div>
<br></br>
<div>
<xp:button type="button" value="Details ..." id="button2">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:try{var itemNum:Number = parseInt(rowIndex + 1);
viewScope.currentItem = itemNum.toPrecision(0);
}catch(e) {
requestScope.errstatus = e.toString();}}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
2015 年 2 月 4 日更新:
我已将问题隔离到自定义控件的呈现 属性。如果我不使用渲染的 属性.
,代码就可以工作我的 XPage (CSJS) 的 onCLientLoad 中的代码是:
$(window).on('load resize', function(){
var screenWidth = $(window).width();
var sDevice = '';
switch(true){
case (screenWidth < 768):
sDevice = 'mobile';
break;
case (screenWidth < 922):
sDevice = 'tablet';
break;
case (screenWidth >= 922):
sDevice = 'desktop'
}
XSP.partialRefreshPost( '#{id:pnlList}', {params: {'sDevice': sDevice}} );
});
我在 XPage 中的自定义控件的来源 属性 是:
<xp:panel rendered="#{javascript:param.sDevice == 'mobile'}">
<xc:ccSYS_AppLayoutReq_p xp:key="panelContentFacet">
<xp:this.facets>
<xc:cc_cartracking_p xp:key="contentFacet"></xc:cc_cartracking_p>
</xp:this.facets>
</xc:ccSYS_AppLayoutReq_p>
</xp:panel>
谢谢,
段
您必须在按钮中设置选项 "Set partial execution mode" execMode="partial"
。
在您同事的问题中寻找完整答案