xpages中的自定义寻呼机
我正在尝试创建一个与寻呼机相结合的转到页面计数器,我发现了这篇有趣的文章: 我有它的工作,但想改变组合框中的页码时,一个页码是在寻呼机上点击(寻呼机正在做一个部分刷新)。我在组合框的第一个部分想到了defaultValue属性,但这不起作用。有什么想法吗 下面是一些示例代码:xpages中的自定义寻呼机,xpages,Xpages,我正在尝试创建一个与寻呼机相结合的转到页面计数器,我发现了这篇有趣的文章: 我有它的工作,但想改变组合框中的页码时,一个页码是在寻呼机上点击(寻呼机正在做一个部分刷新)。我在组合框的第一个部分想到了defaultValue属性,但这不起作用。有什么想法吗 下面是一些示例代码: <xp:panel styleClass="bodyText" id="dataPanel"> <xp:panel style="font-size: 11px !important;">
<xp:panel styleClass="bodyText" id="dataPanel">
<xp:panel style="font-size: 11px !important;">
<xp:panel id="pagerArea" xp:key="headerPager">
<div style="float:left">
Page: 
<xp:comboBox id="cmbPages">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:var rptControl:com.ibm.xsp.component.xp.XspDataIterator = getComponent("rptProduct");
if (rptControl == null) return [];
var total = vwProduct.getAllEntries().getCount(); //rptControl.getRowCount();
var rowsperpage = rptControl.getRows();
var totalpages = Math.ceil(total/rowsperpage);
var arr=[];
for (var i=1;i<=totalpages;i++) {
arr.push(@Text(i))
}
return arr}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler
event="onchange" submit="true" refreshMode="partial"
refreshId="dataPanel">
<xp:this.action><![CDATA[#{javascript:var pager:com.ibm.xsp.component.xp.XspPager = getComponent("pager1_Hidden");
pager.gotoPage(parseFloat(getComponent("cmbPages").getValue()) - 1);}]]></xp:this.action>
</xp:eventHandler>
</xp:comboBox>
</div>
<xp:pager partialRefresh="true" id="pager1"
for="rptProduct">
<xp:pagerControl id="pagerControl1"
type="FirstImage">
</xp:pagerControl>
<xp:pagerControl id="pagerControl8"
type="Separator">
</xp:pagerControl>
<xp:pagerControl id="pagerControl2"
type="PreviousImage">
</xp:pagerControl>
<xp:pagerControl id="pagerControl6"
type="Separator">
</xp:pagerControl>
<xp:pagerControl id="pagerControl5"
type="Group">
</xp:pagerControl>
<xp:pagerControl id="pagerControl7"
type="Separator">
</xp:pagerControl>
<xp:pagerControl id="pagerControl3"
type="NextImage">
</xp:pagerControl>
<xp:pagerControl id="pagerControl9"
type="Separator">
</xp:pagerControl>
<xp:pagerControl id="pagerControl4"
type="LastImage">
</xp:pagerControl>
</xp:pager>
</xp:panel>
<xp:pager partialRefresh="true"
id="pager1_Hidden" for="rptProduct" layout="Previous Group Next"
style="display:none;" pageCount="1000">
</xp:pager>
</xp:panel>
<div style="clear:both;"></div>
<br />
<xp:repeat id="rptProduct" rows="16" value="#{vwProduct}"
var="productRow">
<xp:panel styleClass="linkPanel" id="panel1">
<xp:text escape="false" id="imgHTML">
<xp:this.value><![CDATA[#{javascript:getImgURLForProduct(productRow.getDocument());}]]></xp:this.value>
</xp:text>
<xp:eventHandler event="onClientLoad"
submit="true" refreshMode="norefresh"></xp:eventHandler></xp:panel>
</xp:repeat>
<xp:eventHandler event="onClientLoad" submit="true" refreshMode="norefresh"></xp:eventHandler>
</xp:panel>
页码: ;
信贷:感谢布鲁斯·里尔提出了隐藏寻呼机的想法。我有以下代码在工作。在IE9和Firefox中,它通过组合框改变页面
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoView var="vwProduct" viewName="testview"></xp:dominoView>
</xp:this.data>
<xp:panel styleClass="bodyText" id="dataPanel">
<xp:panel style="font-size: 11px !important;">
<xp:panel id="pagerArea" xp:key="headerPager">
<div style="float:left">
Page: 
<xp:comboBox id="cmbPages">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:var rptControl:com.ibm.xsp.component.xp.XspDataIterator = getComponent("rptProduct");
if (rptControl == null) return [];
var total = vwProduct.getAllEntries().getCount();
var rowsperpage = rptControl.getRows();
var totalpages = Math.ceil(total/rowsperpage);
var arr=[];
for (var i=1;i<=totalpages;i++) {
arr.push(@Text(i))
}
return arr}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" refreshId="dataPanel">
<xp:this.action><![CDATA[#{javascript:var pager:com.ibm.xsp.component.xp.XspPager = getComponent("pager1_Hidden");
pager.gotoPage(parseFloat(getComponent("cmbPages").getValue()) - 1);}]]></xp:this.action>
</xp:eventHandler>
</xp:comboBox>
</div>
<xp:pager partialRefresh="true" id="pager1"
for="rptProduct">
<xp:pagerControl id="pagerControl1"
type="FirstImage">
</xp:pagerControl>
<xp:pagerControl id="pagerControl8"
type="Separator">
</xp:pagerControl>
<xp:pagerControl id="pagerControl2"
type="PreviousImage">
</xp:pagerControl>
<xp:pagerControl id="pagerControl6"
type="Separator">
</xp:pagerControl>
<xp:pagerControl id="pagerControl5" type="Group">
</xp:pagerControl>
<xp:pagerControl id="pagerControl7"
type="Separator">
</xp:pagerControl>
<xp:pagerControl id="pagerControl3"
type="NextImage">
</xp:pagerControl>
<xp:pagerControl id="pagerControl9"
type="Separator">
</xp:pagerControl>
<xp:pagerControl id="pagerControl4"
type="LastImage">
</xp:pagerControl>
</xp:pager>
</xp:panel>
<xp:pager partialRefresh="true" id="pager1_Hidden"
for="rptProduct" layout="Previous Group Next" style="display:none;"
pageCount="10">
</xp:pager>
</xp:panel>
<div style="clear:both;"></div>
<br />
<xp:repeat id="rptProduct" rows="16" value="#{vwProduct}"
var="productRow">
<xp:panel styleClass="linkPanel" id="panel1">
<xp:text escape="false" id="imgHTML"
value="#{productRow.$ClientName}">
</xp:text>
</xp:panel>
</xp:repeat>
</xp:panel>
</xp:view>
页码: ;
通过在客户端更新找到了解决方案,可能可以使用jquery或dojo进行改进
在组合框之后,我添加了以下计算字段(我现在硬编码为16,因为我每页有16行):
这就成功了 很少有人给我发电子邮件问同样的问题。从那以后,我更新了我的文章。你试过了吗
基本上,您已经在beforeRenderResponse事件中放入了一段代码,如这里所述。如果这不能解决问题,请告诉我。我的数据库中已经有了它。非常感谢您的回复-它正在工作,但问题是当您更改页码时,单击寻呼机控件而不是组合框,我希望它也更改组合框的值。因此,当你点击寻呼机中的第2页时,我希望组合框也显示第2页。谢谢拉吉耶夫,我会尝试一下-部分刷新也可以吗?当然可以。您可能已经知道,beforeRenderResponse在部分刷新时触发。
<xp:text escape="false" id="computedField1">
<xp:this.value><![CDATA[#{javascript:var cmbFieldName:String = getClientId("cmbPages");
var strJS:java.lang.StringBuffer = new java.lang.StringBuffer();
var rptControl:com.ibm.xsp.component.xp.XspDataIterator = getComponent("rptProduct");
strJS.append("<script>");
strJS.append("$(function() {");
strJS.append("document.getElementById(\"" + cmbFieldName + "\").value = \"" + ((rptControl.getFirst() / 16) + 1) + "\";");
strJS.append("});");
strJS.append("</script>");
return strJS.toString();}]]></xp:this.value>
</xp:text>