2015-11-02 5 views
0

В моей динамической панели просмотра мне нужны отсортированные столбцы. Проблема в том, что сортировка столбца, который он повторно возвращает XPage и весь контент, обновляется. Есть ли способ добиться сортировки только на панели динамического просмотра без отправки всей страницы? Кроме того, я хочу скрыть этот элемент управления, если выбранный вид пуст.Xpages: Dynamic View Panel - Сортировка

Вот мой код:

<xp:panel id="searchPanel"> 
      <xp:table styleClass="table table-condensed" style="width:auto"> 
       <xp:tr> 
        <xp:td style="border-top:0px" styleClass="text-nowrap" id="searchColumn"> 
         <xp:inputText id="inputText1" value="#{viewScope.searchterm}" styleClass="form-control"></xp:inputText> 
         <xp:link escape="true" text="" id="searchLink"> 
          <i class="fa fa-search" style="margin-left:5px"></i> 
          <xp:eventHandler event="onclick" refreshMode="partial" immediate="false" submit="true" refreshId="ddPanel"> 
           <xp:this.action><![CDATA[#{javascript:var pager:com.ibm.xsp.component.xp.XspPager = getComponent("pager"); 
pager.gotoFirst();}]]></xp:this.action> 
          </xp:eventHandler> 
         </xp:link> 
         <xp:link escape="true" text="" id="clearSearchLink"> 
          <i class="fa fa-times" style="margin-left:5px"></i> 
          <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="ddPanel" onComplete="showHideTableToggle()"> 
           <xp:this.action><![CDATA[#{javascript:viewScope.remove("searchterm");}]]></xp:this.action> 
           <xp:this.script><![CDATA[dojo.byId(getID("inputText1")).value=""]]></xp:this.script> 
          </xp:eventHandler> 
         </xp:link> 
        </xp:td> 
        <xp:td style="border-top:0px;padding-left:20px"> 
         <xp:link escape="true" id="addButton" onclick="return false;" styleClass="btn btn-primary" style="color:rgb(255,255,255)" text="Add"> 
          <i class="fa fa-plus" style="margin-right:5px"></i> 
          <xp:eventHandler event="onclick" submit="false" refreshMode="complete"> 
           <xp:this.script><![CDATA[XSP.openDialog(getID('contentDialog'),'',{"docID":"","newDoc":"false"});]]></xp:this.script> 
          </xp:eventHandler> 
         </xp:link> 
        </xp:td> 

       </xp:tr> 
      </xp:table> 
      <xp:panel id="ddPanel"> 
       <xe:dynamicViewPanel id="mainView" width="100%" dataTableStyleClass="table table-bordered table-condensed table-hover" rows="10" var="myView" 
        showColumnHeader="true" customizerBean="com.hcl.igdm.PickerViewBeanMainViews" partialRefresh="true" refreshId="ddPanel" 
       > 
        <xe:this.data> 
         <xp:dominoView var="mainDataView" dataCache="nodata"> 
          <xp:this.viewName><![CDATA[#{javascript:sessionScope.showView.split("~")[0]}]]></xp:this.viewName> 
         </xp:dominoView> 
        </xe:this.data> 
        <xe:this.rowAttrs> 
         <xp:attr name="onClick"> 
          <xp:this.value><![CDATA[#{javascript:return "javascript:myJSFunction();"}]]></xp:this.value> 
         </xp:attr> 
        </xe:this.rowAttrs> 
       </xe:dynamicViewPanel> 
       <xp:pager layout="Previous Group Next" partialRefresh="true" id="pager" for="mainView" title="Pager"></xp:pager> 
      </xp:panel> 
+0

Вы можете сделать это, если загрузите данные JSON, но это, вероятно, больше изменений, чем вы хотите сделать. Что произойдет, если вы просто обновите панель, содержащую элемент управления представлением? –

+0

Я пытаюсь сделать то же самое, но он обновляет всю страницу. Я выбрал partialrefresh = true и refreshid = идентификатор панели, но это не имеет никакого эффекта. Кроме того, я не уверен, как захватить сервер событий событий сортировки. Я использую данные JSON и таблицу данных, чтобы отобразить их. Но мне также нужно позаботиться о полнотекстовом поиске в представлении, поэтому подумал об этом и переключился на динамическую панель обзора. – Arun

+1

Я предполагаю, что вам не нужно делать полное обновление для сортировки столбцов, но я точно не знаю. Я не сделал этого так в то время. Измените свой вопрос и разместите свой код. –

ответ

1

Это давно этот вопрос был помещен ... но, возможно, ответ может помочь другим людям.

Вы можете поместить dynamicViewPanel в контейнер динамического содержимого (из ExtLib) с атрибутом partial events, установленным в true. Это преобразует все события обновления в частичные события обновления.

<xe:dynamicContent partialEvents="true"> 
    ... 
</xe:dynamicContent>