有人可以帮助我使用移动应用程序的 XPages DataView 控件吗?
Can someone help me with an XPages DataView control for a mobile application?
我正在为我的一个 xpage 应用程序创建我的第一个移动界面。我的方法相当简单,因为我将使用数据视图控件来显示视图数据,然后从那里移动到文档页面。
我的挑战是我想显示我的视图数据,其中不止一个来自摘要列的值。我想展示这样的东西:
Q12345 sent on 5/12/2018 v
ABC MANUFACTURING, CORP.
RT554039
RT223091
RT009873
其中第一行包含右侧的可扩展详细信息 link。详细信息部分将包含 "RT" 个数字。因此,默认情况下每个条目都会显示报价编号、发送日期和客户姓名。然后展开条目将显示 "RT" 个数字。
我在以下位置找到了 Brad Ballasaitis 的博客文章
https://xcellerant.net/2013/08/02/xpages-data-views-3-collapsible-details/
但我无法让它为我工作。这是我看到的:
我也不希望整个事情都加粗,只希望引用编号本身。
这是我的代码:
<xe:appPage id="appPage10" resetContent="true"
pageName="viewByCust" preload="true">
<xe:djxmHeading id="djxmHeading10" back="Back"
moveTo="viewCustByRep">
<xe:this.label><![CDATA[#{javascript:sessionScope.AcctUNID = null;
"Quotes List"}]]></xe:this.label>
<xp:this.facets>
<xp:button value="Home" id="button1"
xp:key="actionFacet">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action>
<xe:moveTo direction="Right to Left"
forceFullRefresh="true" targetPage="homePage"
transitionType="slide">
</xe:moveTo>
</xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:this.facets>
<xp:label id="label9" rendered="false"
style="color:rgb(255,0,0);margin-left:50.0px;font-weight:bold;font-size:11pt"
value="viewByCust">
</xp:label>
</xe:djxmHeading>
<xp:table style="width:100.0%">
<xp:tr>
<xp:td style="text-align:center;height:30px">
<xp:label id="label2"
style="font-size:12pt;font-weight:bold" value="#{javascript:sessionScope.ViewKey}">
</xp:label>
</xp:td>
</xp:tr>
</xp:table>
<xe:dataView id="dataView1" openDocAsReadonly="true"
rows="100" var="ventry" collapsibleDetail="true"
disableHideRow="false">
<xe:this.pageName><![CDATA[#{javascript:sessionScope.BackTo = "viewByCust";
"pageDoc"}]]></xe:this.pageName>
<xp:this.facets>
<xp:panel xp:key="summary" id="panelsumm">
<xp:text escape="false" id="computedField23">
<xp:this.value><![CDATA[#{javascript:if(ventry!=null){
var tmpstr = "<h4><a href='PageName.xsp?openDocument&documentId=" + ventry.getDocument().getUniversalID() + "'>";
tmpstr = tmpstr + ventry.getDocument().getItemValueString('DocNum') + "</a></h4><b></b> sent on asdfasdf<br></br>";
tmpstr = tmpstr + " " + ventry.getColumnValues()[4];
}}]]></xp:this.value>
</xp:text>
</xp:panel>
<xp:text escape="false" id="computedField24"
xp:key="detail">
<xp:this.value><![CDATA[#{javascript:"RT123<br></br>RT5543<br></br>RT9876"}]]></xp:this.value>
</xp:text>
<xp:link escape="true" text="More Entries..."
id="link1" xp:key="pagerBottom">
<xp:this.rendered><![CDATA[#{javascript:sessionScope.AcctSearch==null || sessionScope.AcctSearch==""}]]></xp:this.rendered>
<xp:eventHandler event="onclick"
submit="false">
<xp:this.script>
<xe:addRows rowCount="50"
for="dataView2">
</xe:addRows>
</xp:this.script>
</xp:eventHandler>
</xp:link>
<xe:toolBarButton id="toolBarButton3" label="Search"
xp:key="pagerTop">
<xp:eventHandler event="onClick" submit="true"
refreshMode="partial" refreshId="dataView1">
</xp:eventHandler>
</xe:toolBarButton>
<xp:inputText id="inputText4"
value="#{sessionScope.AcctSearch}" xp:key="pagerTopLeft"
style="height:30px;font-size:12pt">
<xp:eventHandler event="onkeydown" submit="true"
refreshMode="partial" refreshId="dataView2">
<xp:this.script>
<xp:executeClientScript>
<xp:this.script><![CDATA[if (thisEvent.keyCode != '13') {
return false;
}]]></xp:this.script>
</xp:executeClientScript>
</xp:this.script>
</xp:eventHandler>
</xp:inputText>
</xp:this.facets>
<xe:this.data>
<xp:dominoView var="view2"
viewName="SalesQbyCust">
<xp:this.categoryFilter><![CDATA[#{javascript:var vkey = sessionScope.ViewKey;
if(vkey==null){
sessionScope.RepNum;
}
else {
sessionScope.RepNum + "~" + vkey;
}}]]></xp:this.categoryFilter>
</xp:dominoView>
</xe:this.data>
</xe:dataView>
</xe:appPage>
有人可以帮我解决我哪里做错了,并指出正确的方向让我工作吗?
(明确一点,我希望每个条目都有一个 'details expanding' 下拉箭头和正常的 'goto' 右箭头。)
您需要解决的问题是:
var tmpstr = "<h4><a href='PageName.xsp?openDocument&documentId=" + ventry.getDocument().getUniversalID() + "'>";
tmpstr = tmpstr + ventry.getDocument().getItemValueString('DocNum') + "</a></h4><b></b> sent on asdfasdf<br></br>";
tmpstr = tmpstr + " " + ventry.getColumnValues()[4];
您需要通过添加 class 个名称和带有 class 个条目的 div 个标签来修改 HTML。另外 - 为了速度:尽量不要混合 columnValues 和 Items。将您感兴趣的所有值移动到视图中,然后您就不需要调用文档了。或者从文档中选择所有内容(较慢)
var colvals = ventry.getColumnValues();
var tmpstr = "<h4 class='mobileControl'><a href='PageName.xsp?openDocument&documentId=" + ventry.colvals[0] + "'>";
tmpstr = tmpstr + ventry.colvals[1]+ "</a></h4>"
tmpstr = tmpstr + "<div class='mobileDetail' sent on asdfasdf<br />";
tmpstr = tmpstr + colvals[4] + "</div>";
然后用CSS格式化
谢谢你们两位。我删除了文档参考(这是我之前尝试的保留)。
我能够在“摘要”方面使用此计算 html 获得我想要的外观:
if(ventry!=null){
var docnum = ventry.getColumnValues()[1];
var custname = ventry.getColumnValues()[4];
var ndt = ventry.getColumnValues()[5];
var itemlist = ventry.getColumnValues()[2]; //item~desc+item~desc
var itmdscarr = itemlist.split("+");
//just keep the desc (model #s)
var items = new Array();
for(x=0;x<itmdscarr.length;x++){
var tmp = itmdscarr[x]; //item~desc
var tmparr = tmp.split("~");
items.push(tmparr[1]);
}
var jdt = ndt.toJavaDate();
var tmpstr = "<font size='3'>";
tmpstr = tmpstr + docnum + "</font> " + jdt.toDateString() + "<br>";
tmpstr = tmpstr + " " + custname +"<br>";
tmpstr = tmpstr + "<font size='2' face='Courier'><UL style='list-style-type:none;margin-top:0px;margin-left:0px'><LI>" + @Implode(items,"<LI>") + "</UL></font>";
}
这给了我这个...
我删除了 summaryColumn 名称,并将此计算字段简单地放在摘要方面的面板中。就像一个魅力。
再次感谢。
我正在为我的一个 xpage 应用程序创建我的第一个移动界面。我的方法相当简单,因为我将使用数据视图控件来显示视图数据,然后从那里移动到文档页面。
我的挑战是我想显示我的视图数据,其中不止一个来自摘要列的值。我想展示这样的东西:
Q12345 sent on 5/12/2018 v
ABC MANUFACTURING, CORP.
RT554039
RT223091
RT009873
其中第一行包含右侧的可扩展详细信息 link。详细信息部分将包含 "RT" 个数字。因此,默认情况下每个条目都会显示报价编号、发送日期和客户姓名。然后展开条目将显示 "RT" 个数字。
我在以下位置找到了 Brad Ballasaitis 的博客文章 https://xcellerant.net/2013/08/02/xpages-data-views-3-collapsible-details/
但我无法让它为我工作。这是我看到的:
我也不希望整个事情都加粗,只希望引用编号本身。
这是我的代码:
<xe:appPage id="appPage10" resetContent="true"
pageName="viewByCust" preload="true">
<xe:djxmHeading id="djxmHeading10" back="Back"
moveTo="viewCustByRep">
<xe:this.label><![CDATA[#{javascript:sessionScope.AcctUNID = null;
"Quotes List"}]]></xe:this.label>
<xp:this.facets>
<xp:button value="Home" id="button1"
xp:key="actionFacet">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action>
<xe:moveTo direction="Right to Left"
forceFullRefresh="true" targetPage="homePage"
transitionType="slide">
</xe:moveTo>
</xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:this.facets>
<xp:label id="label9" rendered="false"
style="color:rgb(255,0,0);margin-left:50.0px;font-weight:bold;font-size:11pt"
value="viewByCust">
</xp:label>
</xe:djxmHeading>
<xp:table style="width:100.0%">
<xp:tr>
<xp:td style="text-align:center;height:30px">
<xp:label id="label2"
style="font-size:12pt;font-weight:bold" value="#{javascript:sessionScope.ViewKey}">
</xp:label>
</xp:td>
</xp:tr>
</xp:table>
<xe:dataView id="dataView1" openDocAsReadonly="true"
rows="100" var="ventry" collapsibleDetail="true"
disableHideRow="false">
<xe:this.pageName><![CDATA[#{javascript:sessionScope.BackTo = "viewByCust";
"pageDoc"}]]></xe:this.pageName>
<xp:this.facets>
<xp:panel xp:key="summary" id="panelsumm">
<xp:text escape="false" id="computedField23">
<xp:this.value><![CDATA[#{javascript:if(ventry!=null){
var tmpstr = "<h4><a href='PageName.xsp?openDocument&documentId=" + ventry.getDocument().getUniversalID() + "'>";
tmpstr = tmpstr + ventry.getDocument().getItemValueString('DocNum') + "</a></h4><b></b> sent on asdfasdf<br></br>";
tmpstr = tmpstr + " " + ventry.getColumnValues()[4];
}}]]></xp:this.value>
</xp:text>
</xp:panel>
<xp:text escape="false" id="computedField24"
xp:key="detail">
<xp:this.value><![CDATA[#{javascript:"RT123<br></br>RT5543<br></br>RT9876"}]]></xp:this.value>
</xp:text>
<xp:link escape="true" text="More Entries..."
id="link1" xp:key="pagerBottom">
<xp:this.rendered><![CDATA[#{javascript:sessionScope.AcctSearch==null || sessionScope.AcctSearch==""}]]></xp:this.rendered>
<xp:eventHandler event="onclick"
submit="false">
<xp:this.script>
<xe:addRows rowCount="50"
for="dataView2">
</xe:addRows>
</xp:this.script>
</xp:eventHandler>
</xp:link>
<xe:toolBarButton id="toolBarButton3" label="Search"
xp:key="pagerTop">
<xp:eventHandler event="onClick" submit="true"
refreshMode="partial" refreshId="dataView1">
</xp:eventHandler>
</xe:toolBarButton>
<xp:inputText id="inputText4"
value="#{sessionScope.AcctSearch}" xp:key="pagerTopLeft"
style="height:30px;font-size:12pt">
<xp:eventHandler event="onkeydown" submit="true"
refreshMode="partial" refreshId="dataView2">
<xp:this.script>
<xp:executeClientScript>
<xp:this.script><![CDATA[if (thisEvent.keyCode != '13') {
return false;
}]]></xp:this.script>
</xp:executeClientScript>
</xp:this.script>
</xp:eventHandler>
</xp:inputText>
</xp:this.facets>
<xe:this.data>
<xp:dominoView var="view2"
viewName="SalesQbyCust">
<xp:this.categoryFilter><![CDATA[#{javascript:var vkey = sessionScope.ViewKey;
if(vkey==null){
sessionScope.RepNum;
}
else {
sessionScope.RepNum + "~" + vkey;
}}]]></xp:this.categoryFilter>
</xp:dominoView>
</xe:this.data>
</xe:dataView>
</xe:appPage>
有人可以帮我解决我哪里做错了,并指出正确的方向让我工作吗?
(明确一点,我希望每个条目都有一个 'details expanding' 下拉箭头和正常的 'goto' 右箭头。)
您需要解决的问题是:
var tmpstr = "<h4><a href='PageName.xsp?openDocument&documentId=" + ventry.getDocument().getUniversalID() + "'>";
tmpstr = tmpstr + ventry.getDocument().getItemValueString('DocNum') + "</a></h4><b></b> sent on asdfasdf<br></br>";
tmpstr = tmpstr + " " + ventry.getColumnValues()[4];
您需要通过添加 class 个名称和带有 class 个条目的 div 个标签来修改 HTML。另外 - 为了速度:尽量不要混合 columnValues 和 Items。将您感兴趣的所有值移动到视图中,然后您就不需要调用文档了。或者从文档中选择所有内容(较慢)
var colvals = ventry.getColumnValues();
var tmpstr = "<h4 class='mobileControl'><a href='PageName.xsp?openDocument&documentId=" + ventry.colvals[0] + "'>";
tmpstr = tmpstr + ventry.colvals[1]+ "</a></h4>"
tmpstr = tmpstr + "<div class='mobileDetail' sent on asdfasdf<br />";
tmpstr = tmpstr + colvals[4] + "</div>";
然后用CSS格式化
谢谢你们两位。我删除了文档参考(这是我之前尝试的保留)。
我能够在“摘要”方面使用此计算 html 获得我想要的外观:
if(ventry!=null){
var docnum = ventry.getColumnValues()[1];
var custname = ventry.getColumnValues()[4];
var ndt = ventry.getColumnValues()[5];
var itemlist = ventry.getColumnValues()[2]; //item~desc+item~desc
var itmdscarr = itemlist.split("+");
//just keep the desc (model #s)
var items = new Array();
for(x=0;x<itmdscarr.length;x++){
var tmp = itmdscarr[x]; //item~desc
var tmparr = tmp.split("~");
items.push(tmparr[1]);
}
var jdt = ndt.toJavaDate();
var tmpstr = "<font size='3'>";
tmpstr = tmpstr + docnum + "</font> " + jdt.toDateString() + "<br>";
tmpstr = tmpstr + " " + custname +"<br>";
tmpstr = tmpstr + "<font size='2' face='Courier'><UL style='list-style-type:none;margin-top:0px;margin-left:0px'><LI>" + @Implode(items,"<LI>") + "</UL></font>";
}
这给了我这个...
我删除了 summaryColumn 名称,并将此计算字段简单地放在摘要方面的面板中。就像一个魅力。
再次感谢。