下面是此問題的方法,它使用的URL參數用於排序的視圖面板的列。
實施例的XPage:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.resources>
<xp:script src="/jssViewSort.jss" clientSide="false"></xp:script>
</xp:this.resources>
<xp:viewPanel rows="30" id="viewPanel2">
<xp:this.facets>
<xp:pager partialRefresh="true" layout="Previous Group Next"
xp:key="headerPager" id="pager2">
</xp:pager>
</xp:this.facets>
<xp:this.data>
<xp:dominoView var="view1" viewName="_YOUR_VIEW_"></xp:dominoView>
</xp:this.data>
<xp:viewColumn columnName="Form" id="viewColumn3">
<xp:viewColumnHeader value="Form" id="viewColumnHeader3" iconSrc="#{javascript:getViewSortIcon(this)}">
<xp:this.attrs>
<xp:attr name="onclick">
<xp:this.value><![CDATA[#{javascript:getViewSortLink(this)}]]></xp:this.value>
</xp:attr>
</xp:this.attrs>
</xp:viewColumnHeader>
</xp:viewColumn>
</xp:viewPanel>
</xp:view>
使用的視圖具有名爲 「形式」 一個可排序的列,在兩個方向上排序。
這裏是SSJS庫,未優化和無證:
/**
* returns a link for sorting a view panel
*
* @author Sven Hasselbach
* @version 0.1
*/
function getViewSortLink(colHeader:com.ibm.xsp.component.xp.XspViewColumnHeader){
var col:com.ibm.xsp.component.xp.XspViewColumn = colHeader.getParent();
var vp:com.ibm.xsp.component.xp.XspViewPanel = col.getParent();
var ds:com.ibm.xsp.model.domino.DominoViewData = vp.getDataSource();
var curSortOrder = vp.getDataSource().getSortOrder();
var sortCol = context.getUrlParameter("sortColumn");
var sortOrder = context.getUrlParameter("sortOrder");
if(sortCol === col.getColumnName()){
if(curSortOrder === null || curSortOrder === "")
sortOrder = "ascending";
if(curSortOrder === "ascending")
sortOrder = "descending";
if(curSortOrder === "descending")
sortOrder = ""
}else{
sortOrder = "ascending";
sortCol = col.getColumnName();
}
return "window.location='" + context.getUrl().getPath() + "?sortColumn=" + sortCol + "&sortOrder=" + sortOrder + "'";
}
/**
* returns a view icon for sorting
*
* @author Sven Hasselbach
* @version 0.1
*/
function getViewSortIcon(colHeader:com.ibm.xsp.component.xp.XspViewColumnHeader){
var col:com.ibm.xsp.component.xp.XspViewColumn = colHeader.getParent();
var vp:com.ibm.xsp.component.xp.XspViewPanel = col.getParent();
var ds:com.ibm.xsp.model.domino.DominoViewData = vp.getDataSource();
var curSortOrder = vp.getDataSource().getSortOrder();
var sortCol = context.getUrlParameter("sortColumn");
if(sortCol !== col.getColumnName())
return "http://www.google.de/images/icons/product/chrome-48.png";
if(curSortOrder === "ascending")
return "https://www.google.com/intl/de/images/icons/feature/alert-b42.png"
if(curSortOrder === "descending")
return "https://www.google.com/intl/de/images/icons/product/calendar-42.png"
return "http://www.google.de/images/icons/product/chrome-48.png";
}
的圖像可以用CSS來調整。
希望這會有所幫助!
考慮在定製程序bean中使用DynamicView控件。 –
我曾經在DynamicView中看過一個視圖,但我不知道「Customizer Bean」是什麼意思。你能詳細說明嗎? –
看看這個:https://github.com/jesse-gallagher/Domino-One-Offs/tree/master/mcl/reports你可以把這個類放到你的NSF中,並把Customizer的bean屬性設置爲Dynamic view control修改它的渲染。 –