Xpages: панель динамического просмотра — сортировка

В моей динамической панели просмотра мне нужно иметь сортируемые столбцы. Проблема заключается в том, что при сортировке столбца он повторно отправляет XPage, и весь контент обновляется. Есть ли способ добиться сортировки только на панели динамического просмотра без отправки всей страницы? Кроме того, я хочу скрыть этот элемент управления, если выбранный вид пуст.

Вот мой код:

<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>

person Arun    schedule 02.11.2015    source источник
comment
Вы можете сделать это, если загрузите данные JSON, но это, вероятно, больше изменений, чем вы хотите. Что произойдет, если вы просто обновите панель, содержащую элемент управления представлением?   -  person Steve Zavocki    schedule 02.11.2015
comment
Я пытаюсь сделать то же самое, но он обновляет всю страницу. Я выбрал частичное обновление = истина и обновление идентификатора панели = идентификатор панели, но это не имеет никакого эффекта. Кроме того, я не уверен, как перехватить серверную часть событий сортировки. Я использовал данные JSON и таблицу данных, чтобы отобразить то же самое. Но мне также нужно позаботиться о полнотекстовом поиске в представлении, поэтому я одумался и переключился на динамическую панель просмотра.   -  person Arun    schedule 02.11.2015
comment
Я предполагаю, что вам не нужно выполнять полное обновление для выполнения сортировки столбцов, но я точно не знаю. Я давно так не делал. Пожалуйста, отредактируйте свой вопрос и опубликуйте свой код.   -  person Steve Zavocki    schedule 02.11.2015
comment
Вы также использовали частичное исполнение? Возможно, если вы включите код, нам будет легче разобраться.   -  person David Navarre    schedule 03.11.2015


Ответы (1)


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

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

<xe:dynamicContent partialEvents="true">
    ...
</xe:dynamicContent>
person Adrian    schedule 10.10.2016