У меня есть модуль поиска в моем приложении, который фильтрует несколько видов в зависимости от выбора пользователя.Xpages no results after FTSearch on view
Я хочу добавить диалог, если поиск не имеет результатов, вместо того, чтобы показывать пустой вид. Как я могу это сделать?
Я попытался получить rowCount(), но кажется, что он не получает правильное количество строк, я не знаю почему.
SSJS код:
var vw=database.getView("vwCautareDocI");
var tmpArray = new Array("");
var cTerms = 0;
var dateFormatter = new java.text.SimpleDateFormat("MM-dd-yyyy");
if (sessionScope.numprenum) {
tmpArray[cTerms++] = "(Field NumePrenume = \"*" + sessionScope.numprenum + "*\")";
}
if (sessionScope.postvizat) {
tmpArray[cTerms++] = "(Field PostulVizat = \"*" + sessionScope.postvizat + "*\")";
}
if (sessionScope.din && sessionScope.pana) {
tmpArray[cTerms++] = "Field _creationDate >= " + dateFormatter.format(sessionScope.din) + " AND Field _creationDate <= " + dateFormatter.format(sessionScope.pana);
}
filter = tmpArray.join(" AND ").trim();
var vec=vw.getAllDocumentsByKey(filter , true);
return vec.getCount();
Это фильтр я использую, чтобы фильтровать мой взгляд. Я хотел бы добавить этот код к кнопке, и если результат равен 0, то вместо того, чтобы показывать представление, он должен показать диалог с сообщением.
Каким будет aproach для того, чтобы выполнить как ftSearch, так и вернуть отфильтрованные документы? –
Вы ищете только результат ftsearch, а не фильтр. Таким образом, vw.ftSearch() - это метод, который вы хотите, а не getAllDocumentsByKey(). Кроме того, getCount() имеет плохую производительность. Если вы хотите проверить, есть ли какие-либо результаты, вызовите getFirstDocument() в NotesDocumentCollection, который является результатом ftSearch, и проверьте, является ли оно нулевым. Код, который у вас есть, возвращает число, а не результаты ftSearch. Чтобы получить их, вам нужно вернуть NotesDocumentCollection. –