Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Here is a workaround for this problem, it uses the URL parameter for sorting the view panel columns.</p> <p>Example XPage:</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;xp:view xmlns:xp="http://www.ibm.com/xsp/core"&gt; &lt;xp:this.resources&gt; &lt;xp:script src="/jssViewSort.jss" clientSide="false"&gt;&lt;/xp:script&gt; &lt;/xp:this.resources&gt; &lt;xp:viewPanel rows="30" id="viewPanel2"&gt; &lt;xp:this.facets&gt; &lt;xp:pager partialRefresh="true" layout="Previous Group Next" xp:key="headerPager" id="pager2"&gt; &lt;/xp:pager&gt; &lt;/xp:this.facets&gt; &lt;xp:this.data&gt; &lt;xp:dominoView var="view1" viewName="_YOUR_VIEW_"&gt;&lt;/xp:dominoView&gt; &lt;/xp:this.data&gt; &lt;xp:viewColumn columnName="Form" id="viewColumn3"&gt; &lt;xp:viewColumnHeader value="Form" id="viewColumnHeader3" iconSrc="#{javascript:getViewSortIcon(this)}"&gt; &lt;xp:this.attrs&gt; &lt;xp:attr name="onclick"&gt; &lt;xp:this.value&gt;&lt;![CDATA[#{javascript:getViewSortLink(this)}]]&gt;&lt;/xp:this.value&gt; &lt;/xp:attr&gt; &lt;/xp:this.attrs&gt; &lt;/xp:viewColumnHeader&gt; &lt;/xp:viewColumn&gt; &lt;/xp:viewPanel&gt; &lt;/xp:view&gt; </code></pre> <p>The view used has a sortable column named "Form", sortable in both directions.</p> <p>And here is the SSJS library, unoptimized and undocumented:</p> <pre><code>/** * 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 + "&amp;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"; } </code></pre> <p>The image can be adjusted with CSS.</p> <p>Hope this helps!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload