2013-02-22 5 views
0

Я делаю поисковый запрос на viewPanel. Когда результаты отображаются в представлении, я хочу пропустить только возвращенные результаты и построить массив имен для каждой строки. У меня есть поле Name в первом столбце моего представления Xpage. Я попытался следующий:Получить значения столбца поиска (отфильтрованные) Просмотреть результаты

var viewControl = getComponent("namesPanel"); 
var view = viewControl.getDataModel().getDominoViewData().getDataObject(); 
var entries = view.getAllEntries(); 
var entry = entries.getFirstEntry(); 

var namesArray = []; 
while(entry) 
{ 
    namesArray.push(entry.getColumnValues().elementAt(0)); 
    entry = entries.getNextEntry(); 
} 

getComponent("DisplayNames").setValue(namesArray); 

Приведенных выше код возвращает каждый имени в серверном Notes просмотр независимо от моего поискового запроса. Я понимаю, что есть getAllEntriesByKey(), но мое представление Xpages фильтруется поиском, а не значениями столбца.

Есть ли способ построить массив значений столбцов только на отображаемых результатах в моем представлении после поиска? Спасибо за любые советы.

ответ

3

Думаю, что у меня это выяснено. Найдено некоторая помощь здесь: http://www.xsptalk.com/Public/Website/Blog.nsf/dx/04032011122915CCOGNE.htm

var temprows = getComponent("namesPanel"); 
var modelData = temprows.getDataModel(); 
var namesArray = []; 

for(i=0; i < modelData.getRowCount(); i++) 
{ 
    modelData.setRowIndex(i); 
    var xspViewEntry=modelData.getRowData(); 
    var document=xspViewEntry.getDocument(); 
    namesArray.push(document.getItemValueString("name")); 
} 

getComponent("DisplayNames").setValue(namesArray); 
+0

интересно, я просто сообщил об этом как об ошибке, прежде чем я увидел решение здесь http://www-10.lotus.com/ldd/ndsebetaforum.nsf/topicThread.xsp?action = openDocument & documentId = 173B8E2826C07E6285257B1A0058EBEA –

+0

Я нашел проблему с этим методом. Кажется, что getRowCount() не возвращает правильное количество строк до тех пор, пока не будет отфильтровано представление: www-01.ibm.com/support/docview.wss?uid=swg1LO58916. Похоже, что он кэширует первые две «страницы» документов. Кто-нибудь знает способ обойти это? –

+0

Попробуйте ViewPanelComponent.getEntryCount(), когда представление не фильтруется. В вашем случае temprows.getEntryCount() –

Смежные вопросы