Может ли кто-нибудь помочь мне с элементом управления XPages DataView для мобильного приложения? - PullRequest
0 голосов
/ 11 июня 2018

Я создаю свой первый мобильный интерфейс для одного из моих приложений xpage.Мой подход довольно прост в том, что я буду использовать элементы управления dataview, чтобы показать данные просмотра, а затем перейти к странице документа оттуда.

Моя задача состоит в том, чтобы я хотел отобразить данные моего просмотра с более чем одним значением изсводная колонка.Я хочу показать что-то вроде этого:

  Q12345 sent on 5/12/2018               v
      ABC MANUFACTURING, CORP.
    RT554039
    RT223091
    RT009873

, где первая строка содержит ссылку на расширяемые детали справа.Детальный раздел будет содержать цифры «RT».Таким образом, по умолчанию каждая запись будет отображать номер цитаты, дату отправки и имя клиента.А затем расширение записи покажет цифры «RT».

Я нашел статью в блоге Брэда Балласайтиса по адресу https://xcellerant.net/2013/08/02/xpages-data-views-3-collapsible-details/

, но не могу заставить ее работать на меня.Это то, что я вижу вместо этого:

enter image description here

Я также не хочу, чтобы все это было выделено жирным шрифтом, просто сам номер цитаты.

Вот мой код:

        <xe:appPage id="appPage10" resetContent="true"
            pageName="viewByCust" preload="true">
            <xe:djxmHeading id="djxmHeading10" back="Back"
                moveTo="viewCustByRep">
                <xe:this.label><![CDATA[#{javascript:sessionScope.AcctUNID = null;

"Quotes List"}]]></xe:this.label>
                <xp:this.facets>
                    <xp:button value="Home" id="button1"
                        xp:key="actionFacet">
                        <xp:eventHandler event="onclick" submit="true"
                            refreshMode="complete">
                            <xp:this.action>
                                <xe:moveTo direction="Right to Left"
                                    forceFullRefresh="true" targetPage="homePage"
                                    transitionType="slide">
                                </xe:moveTo>
                            </xp:this.action>
                        </xp:eventHandler>
                    </xp:button>
                </xp:this.facets>
                <xp:label id="label9" rendered="false"
                    style="color:rgb(255,0,0);margin-left:50.0px;font-weight:bold;font-size:11pt"
                    value="viewByCust">
                </xp:label>


            </xe:djxmHeading>
            <xp:table style="width:100.0%">
                <xp:tr>
                    <xp:td style="text-align:center;height:30px">
                        <xp:label id="label2"
                            style="font-size:12pt;font-weight:bold" value="#{javascript:sessionScope.ViewKey}">

                        </xp:label>
                    </xp:td>
                </xp:tr>
            </xp:table>
            <xe:dataView id="dataView1" openDocAsReadonly="true"
                rows="100" var="ventry" collapsibleDetail="true"
                disableHideRow="false">

                <xe:this.pageName><![CDATA[#{javascript:sessionScope.BackTo = "viewByCust";
"pageDoc"}]]></xe:this.pageName>
                <xp:this.facets>
                    <xp:panel xp:key="summary" id="panelsumm">
                        <xp:text escape="false" id="computedField23">
                            <xp:this.value><![CDATA[#{javascript:if(ventry!=null){
    var tmpstr = "<h4><a href='PageName.xsp?openDocument&documentId=" + ventry.getDocument().getUniversalID() + "'>";
    tmpstr = tmpstr + ventry.getDocument().getItemValueString('DocNum') + "</a></h4><b></b> sent on asdfasdf<br></br>";
    tmpstr = tmpstr + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + ventry.getColumnValues()[4];
}}]]></xp:this.value>
                        </xp:text>
                    </xp:panel>
                    <xp:text escape="false" id="computedField24"
                        xp:key="detail">
                        <xp:this.value><![CDATA[#{javascript:"RT123<br></br>RT5543<br></br>RT9876"}]]></xp:this.value>
                    </xp:text>
                    <xp:link escape="true" text="More Entries..."
                        id="link1" xp:key="pagerBottom">
                        <xp:this.rendered><![CDATA[#{javascript:sessionScope.AcctSearch==null || sessionScope.AcctSearch==""}]]></xp:this.rendered>

                        <xp:eventHandler event="onclick"
                            submit="false">
                            <xp:this.script>
                                <xe:addRows rowCount="50"
                                    for="dataView2">
                                </xe:addRows>
                            </xp:this.script>
                        </xp:eventHandler>
                    </xp:link>
                    <xe:toolBarButton id="toolBarButton3" label="Search"
                        xp:key="pagerTop">
                        <xp:eventHandler event="onClick" submit="true"
                            refreshMode="partial" refreshId="dataView1">
                        </xp:eventHandler>
                    </xe:toolBarButton>
                    <xp:inputText id="inputText4"
                        value="#{sessionScope.AcctSearch}" xp:key="pagerTopLeft"
                        style="height:30px;font-size:12pt">
                        <xp:eventHandler event="onkeydown" submit="true"
                            refreshMode="partial" refreshId="dataView2">
                            <xp:this.script>
                                <xp:executeClientScript>
                                    <xp:this.script><![CDATA[if (thisEvent.keyCode != '13') {
    return false;
}]]></xp:this.script>
                                </xp:executeClientScript>
                            </xp:this.script>
                        </xp:eventHandler>
                    </xp:inputText>
                </xp:this.facets>
                <xe:this.data>
                    <xp:dominoView var="view2"
                        viewName="SalesQbyCust">


                        <xp:this.categoryFilter><![CDATA[#{javascript:var vkey = sessionScope.ViewKey;
if(vkey==null){
    sessionScope.RepNum;
}
else {
    sessionScope.RepNum + "~" + vkey;
}}]]></xp:this.categoryFilter>
                    </xp:dominoView>
                </xe:this.data>
            </xe:dataView>
        </xe:appPage>

Может ли кто-нибудь помочь мне с тем, где я ошибся, и указать мне правильное направление, чтобы это заработало?

(Просто чтобы прояснить, яЯ надеюсь, что у вас есть как стрелка вниз раскрывающегося списка деталей, так и обычная стрелка вправо для перехода к каждой записи.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Спасибо вам обоим, ребята.Я удалил ссылку на документ (это было удержанием из моих предыдущих попыток).

Мне удалось получить взгляд, который я получил, с помощью этого вычисленного html в фасете Summary:

if(ventry!=null){
    var docnum = ventry.getColumnValues()[1];
    var custname = ventry.getColumnValues()[4];
    var ndt = ventry.getColumnValues()[5];
    var itemlist = ventry.getColumnValues()[2];  //item~desc+item~desc
    var itmdscarr = itemlist.split("+");
    //just keep the desc (model #s)
    var items = new Array();
    for(x=0;x<itmdscarr.length;x++){
        var tmp = itmdscarr[x];   //item~desc
        var tmparr = tmp.split("~");
        items.push(tmparr[1]);
    }
    var jdt = ndt.toJavaDate();
    var tmpstr = "<font size='3'>";
    tmpstr = tmpstr + docnum + "</font>&nbsp;&nbsp;&nbsp;&nbsp;" + jdt.toDateString() + "<br>";
    tmpstr = tmpstr + "&nbsp;&nbsp;&nbsp;&nbsp;" + custname +"<br>";
    tmpstr = tmpstr + "<font size='2' face='Courier'><UL style='list-style-type:none;margin-top:0px;margin-left:0px'><LI>" + @Implode(items,"<LI>") + "</UL></font>";
}

который дает мне это ...

enter image description here

Я удалил имя summaryColumn и просто поместил это вычисленное поле в панель в фасете Summary.Работает как шарм.

Еще раз спасибо.

0 голосов
/ 12 июня 2018

Часть, к которой вам нужно обратиться, это:

var tmpstr = "<h4><a href='PageName.xsp?openDocument&documentId=" + ventry.getDocument().getUniversalID() + "'>";
tmpstr = tmpstr + ventry.getDocument().getItemValueString('DocNum') + "</a></h4><b></b> sent on asdfasdf<br></br>";
tmpstr = tmpstr + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + ventry.getColumnValues()[4];

Вам нужно переработать HTML, добавив имена классов и теги div с записями классов.Также - ради скорости: старайтесь не смешивать columnValues ​​и Items.Переместите все интересующие вас значения в представление, тогда вам не нужно вызывать документ.Или выберите все из документа (медленнее)

var colvals = ventry.getColumnValues();
var tmpstr = "<h4 class='mobileControl'><a href='PageName.xsp?openDocument&documentId=" + ventry.colvals[0] + "'>";
tmpstr = tmpstr + ventry.colvals[1]+ "</a></h4>"
tmpstr = tmpstr + "<div class='mobileDetail' sent on asdfasdf<br />";
tmpstr = tmpstr + colvals[4] + "</div>";

Затем используйте CSS для его форматирования

...