У меня есть категориальный вид, первый столбец категоризирован и восходит. Последний столбец вычисляет общее количество. Представьте себе имя вида называется view1 и выглядит следующим образом:xpages: как получить общее количество категоризированного столбца
1st column(categorized) | 2nd column | 3rd column (total)
Australia | | 2
| Alex | 1
| Bill | 1
Brazil | | 3
| Alan | 1
| Alice | 1
| Tom | 1
Chile | | 1
| John | 1
Denmark | | 2
| Susan | 1
| Tim | 1
| | 8
Я хотел бы получить в общей сложности каждого категоризированного столбца, например, общее для Австралии 2, общая для Бразилии 3. Я просматриваю в Интернете и пишу код, но результат не увенчался успехом.
Это моя первая попытка: я намерен использовать @DbLookup для цикла и @Count.
var value = sessionScope.Value;
var lookupValue = (@DbLookup(@DbName(),"view1",value,1));
for(var a = 0; a < lookupValue.length; a++)
{
//try to display the lookupValue and the relevant total
writer.write("<tr><td>"+lookupValue[a]+"<td> "+ @Count(lookupValue[a]) + "</td></tr>");
}
Когда я запускаю код, я получаю следующий результат:
Australia 1
Australia 1
Brazil 1
Brazil 1
Brazil 1
Chile 1
Denmark 1
Denmark 1
После первой попытки, я начинаю вторую попытку: (обратите внимание, что большая часть кода в этой части я получаю из интернета, и я просто изменить немного, чтобы удовлетворить мой случай)
var myView:NotesView = database.getView('view1');
var vec:NotesViewEntryCollection = myView.getAllEntries();
var viewEnt:NotesViewEntry = vec.getFirstEntry();
writer.write("<table>");
while (viewEnt != null)
{
// try to retrieve the total in the 3rd column
writer.write("<tr><td> "+ 'viewEnt.getColumnValues()[2]' +"</td></tr>");
var tmp = vec.getNextEntry(viewEnt);
viewEnt.recycle();
viewEnt = tmp;
}
writer.write("</table>");
writer.endDocument();
Я бегу код и результат пуст. Я не получаю никакого общего столбца с категорией.
Я просматриваю код из попытки 1 и стараюсь 2, я не понимаю, почему я не могу получить общее количество.
Я ищу в Интернете снова, и я нашел аналогичную должность: Getting a summary count in a view export?
Я пытаюсь применить решение в приложении: (обратите внимание, что большая часть кода в этой части я получаю от этой должности, и я просто добавьте имя вида в функции)
function getCategoryData(viewName, dataColumn, getChildren) {
var v = database.getView(view1); // change viewName to view1
var nav = v.createViewNav();
var ve = nav.getFirst();
var isFirst = true;
var result = "[";
while (ve) {
if (!ve.isTotal()) {
var curData = ve.getColumnValues();
if (!isFirst) {
result += ",";
}
result += "{label : \"";
result += curData[0];
result += "\", value : ";
result += curData[dataColumn];
/* for 2 level categories we fetch additional data */
if (getChildren) {
var childve = nav.getChild();
var firstChild = true;
result += ", children : [";
while (childve) {
var childData = childve.getColumnValues();
if (!firstChild) {
result += ",";
}
result += "{label : \"";
result += childData[1];
result += "\", value : ";
result += childData[dataColumn];
result += "}";
firstChild = false;
childve = nav.getNextSibling(childve);
}
result += "]"
}
result += "}";
isFirst = false;
}
ve = nav.getNextSibling(ve);
}
result += "]";
return result;
}
Я бегу код и я получаю результат:
[{label : "Australia", value : undefined},{label : "Brazil", value : undefined},{label : "Chile", value : undefined},{label : "Denmark", value : undefined}]
После третьей попытки, я тонкий k причина, по которой я не могу получить общее количество, я не понимаю концепцию о том, как получить общее количество в представлении.
Фактически, то, что я хотел бы сделать, это получить общее количество каждого столбца с разбивкой по категориям1. Поэтому представьте, что результат будет выглядеть так:
Australia 2
Brazil 3
Chile 1
Denmark 2
На самом деле, я думаю, что первая попытка очень близка к результату. Я чувствую, что что-то пропустил в коде (возможно, я думаю, в части цикла for).
Как я могу получить общее количество столбцов с каждой категорией?
Благодарный за ваш совет по этому вопросу, пожалуйста. Большое спасибо.
Он работает для нескольких категоризированных столбцов, если вы используете 'var tmpentry: NotesViewEntry = nav.getNextSibling (ve);'. Поскольку он начинается с категории верхнего уровня, 'getNextSibling' будет возвращать только категории верхнего уровня. –
Хороший вопрос! Я не думаю, что. – jpishko
Спасибо за ваш ответ и комментарии. Я могу получить общее количество каждого столбца с категорией, используя код 'getCategoryData (« страны », 0, 2);'. Результат выглядит так: [{label: «Австралия», значение: 2}, {label: «Brazil», value: 3}, {label: «Chile», value: 1}, {label: «Denmark», value: 2}] ' – beginner