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
Опитвам се да направя същото, но опреснява цялата страница. Избрах partialrefresh = true и refreshid=panel id, но няма никакъв ефект. Освен това не съм сигурен как да прихвана страната на сървъра за сортиране на събития. Използвах 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