我正在尝试为文档数据库构建动态导航器。导航器使用重复节点正确构建(我从Per的帖子中得到了这个),我可以将页面或基本节点放在重复节点中,一切看起来都不错,但是我需要设置一个范围变量然后刷新视图元素,我无法解雇该代码。
我已经在下面列出了导航器的代码。任何帮助将不胜感激,我已经搜索了Stack Overflow并尝试手动添加事件都无济于事。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xe:navigator
id="navigator1"
expandable="false">
<xe:this.treeNodes>
<xe:repeatTreeNode
var="navEntry"
indexVar="index"
loaded="true">
<xe:this.children>
<xe:pageTreeNode
rendered="true"
page="/xpViewAllDocs.xsp">
<xe:this.label><![CDATA[#{javascript:var dbName=@DbName();
var arr = @Unique(@Trim(@DbColumn(dbName,"alldocslookup",1)))
arr[index]}]]></xe:this.label>
</xe:pageTreeNode>
</xe:this.children>
<xe:this.value><![CDATA[#{javascript:var dbName=@DbName();
@Elements(@Unique(@Trim(@DbColumn(dbName,"alldocslookup",1))))}]]></xe:this.value>
</xe:repeatTreeNode>
</xe:this.treeNodes>
<xp:eventHandler
event="onItemClick"
submit="true"
refreshMode="complete">
<xe:this.action><![CDATA[#{javascript:viewScope.put("key","Test");
view.postScript("alert('Client Side JavaScript executed!')");}]]></xe:this.action>
</xp:eventHandler></xe:navigator>
</xp:view>
编辑:
我尝试了下面的所有建议,但没有一个有效。
我可以通过简单地在重复或计算字段中放置一个链接或类似的东西来实现这一点,但是它根本不是真正看起来的导航元素。如果我可以改变一些css,使它看起来像导航我会很高兴。我用一个列表容器对它进行了一次尝试,但它无法正常工作:
我觉得我很亲密。我能做些什么让它看起来更像导航仪?
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xe:list
id="list1"
styleClass="lotusMenuHeader">
<xp:link
role="menuItem"
styleClass="lotusSelected"> All Documents</xp:link>
<xp:link>Tag 1</xp:link>
<xp:link>Tag 2</xp:link>
</xe:list>
<xp:panel>
<ul
header="lotusMenuHeader">
<li
class='lotusSelected'>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
</xp:panel>
</xp:view>
答案 0 :(得分:1)
onItemClick
似乎无法与pageTreeNode
一起使用。该事件根本无法呈现。
请改用basicLeafNode
。 onItemClick
可以很好地使用它
将当前单击的值放入带有context.getSubmittedValue()
的sessionScope变量中
使用context.getSubmittedValue()
重定向到目标XPage。
<xe:navigator
id="navigator1"
expandable="false">
<xe:this.treeNodes>
<xe:repeatTreeNode
var="navEntry">
<xe:this.children>
<xe:basicLeafNode
label="#{navEntry}"
submitValue="#{navEntry}" />
</xe:this.children>
<xe:this.value><![CDATA[#{javascript:var dbName=@DbName();
@Unique(@Trim(@DbColumn(dbName,"alldocslookup",1)))}]]></xe:this.value>
</xe:repeatTreeNode>
</xe:this.treeNodes>
<xp:eventHandler
event="onItemClick"
submit="true"
refreshMode="complete">
<xe:this.action><![CDATA[#{javascript:
sessionScope.key = context.getSubmittedValue();
context.redirectToPage("xpViewAllDocs.xsp")}]]></xe:this.action>
</xp:eventHandler>
</xe:navigator>