Xpages - Повторите контроль / просмотр SSJS - PullRequest
0 голосов
/ 01 мая 2018

У меня точно такой же дизайн базы данных в реальном времени и DEV, однако, когда у меня есть повторяющийся элемент управления на странице, он работает как положено в DEV, вытягивая статус документов из представления, но не из живого, где он просто перечисляет номер документа в представлении. Кажется, он также не возвращает никаких уникальных значений. Я использую dbcolumn, чтобы получить значения, и попытался обернуть @unique вокруг него, а затем использую скрипт lib для обработки уникальных записей, но мне не повезло. Изображение прикреплено и код ниже. Есть идеи?

<table class="table table-hover">
  <thead>
    <tr>
      <th>Status</th>
      <th>Total</th>
      <th>%</th>
    </tr>
  </thead>
            <tbody>

                <xp:repeat id="repeat1" rows="30" var="row">
                    <xp:this.value><![CDATA[#{javascript://var result = @DbColumn("", "vwStatusStats", 1);
//var result = session.evaluate("@DbColumn(\"\"; ; \"vwStatusStats\"; 1)").elementAt(0) 


//result = session.evaluate("@Unique");

//return result
//return @Unique(@DbColumn("", "vwStatusStats", 1))

return DbColumnArray("", "", "", "unique", "", "vwStatusStats", 1)
}]]></xp:this.value>

                    <tr>
                        <td>
                            <xp:text escape="true"
                                id="computedField11">
                                <xp:this.value><![CDATA[#{javascript:row}]]></xp:this.value>
                            </xp:text>
                        </td>
                        <td>
                            <xp:text escape="true"
                                id="computedField1">
                                <xp:this.value><![CDATA[#{javascript:var v:NotesView = database.getView("vwStatusStats");
var vec:NotesViewEntryCollection = v.getAllEntriesByKey(row);
return vec.getCount().toString()}]]></xp:this.value>
                            </xp:text>
                        </td>

                        <td>
                            <xp:text escape="true"
                                id="computedField2">
                                <xp:this.value><![CDATA[#{javascript:var total = getComponent("cmpTotal").getValue();
var amount = getComponent("computedField1").getValue();

var result = (amount / total) * 100;

return result}]]></xp:this.value>
                            </xp:text>
                        </td>
                    </tr>
                </xp:repeat>

                <tr>
                    <td>Total</td>                      
                    <td>
                        <xp:text escape="true" id="cmpTotal">
                            <xp:this.value><![CDATA[#{javascript:var v:NotesView = database.getView("vwStatusStats");

return v.getEntryCount().toString()}]]></xp:this.value>
                        </xp:text></td>
                        <td>
                            <xp:text escape="true"
                                id="computedField3">
                                <xp:this.value><![CDATA[#{javascript:var total = getComponent("cmpTotal").getValue();
var amount = getComponent("cmpTotal").getValue();

var result = (amount / total) * 100;

return result}]]></xp:this.value>
                            </xp:text></td>
                </tr>               

            </tbody>
                    </table>        

Issue

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Похоже, ваш просмотр в реальном времени поврежден. Откройте его с помощью клиента Notes, чтобы убедиться, что он содержит ожидаемые значения. Одной из возможностей может быть искажение значения «программного имени» в свойствах столбца. Иногда, особенно при копировании / вставке с учетом дизайна, ваши столбцы получают одинаковое значение в долларах (например, 1 доллар) для столбцов с другой формулой. Это вызывает «странные» значения в одном из этих столбцов, полностью отличающиеся от его формулы. Удалите программное значение, новое будет сгенерировано автоматически.

0 голосов
/ 01 мая 2018

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

Рекомендуется также, чтобы @DbColumn вызов передавал @DbName() в качестве первого параметра. Он все равно должен будет выполнить тот же объем работы, но он обеспечит стабильные результаты («» не будет работать для XPiNC). Использование SSJS / Java для получения View и возврата getColumnValues() также, вероятно, будет лучше, чем @DbColumn(), согласно анализу Говарда Гринберга. В качестве дополнительного бонуса, возможно, стоит взглянуть на этот XSnippet для использования фасетов Repeat Control для HTML, который обернет ваш повтор https://openntf.org/XSnippets.nsf/snippet.xsp?id=repeat-with-header-and-footer-facets. Это гарантирует, что HTML для таблицы не будет вводиться дополнительный HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...