2013-02-22 101 views
0

我正在viewPanel上执行搜索查询。当结果显示在视图中时,我只想遍历返回的结果并为每行创建一个名称数组。我的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); 

上面的代码返回名在后端注释不管我的搜索查询的看法。我意识到有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

有趣,我刚刚报道这个bug之前,我看到您的解决方案在这里http://www-10.lotus.com/ldd/ndsebetaforum.nsf/topicThread.xsp?action = openDocument&documentId = 173B8E2826C07E6285257B1A0058EBEA – 2013-02-22 19:10:31

+0

我发现这个方法有问题。看起来好像getRowCount()在过滤视图之前不会返回正确的行数:www-01.ibm.com/support/docview.wss?uid=swg1LO58916。它似乎只缓存文档的前两个“页面”。 有没有人知道一种方法来解决这个问题? – 2013-02-22 21:16:22

+0

当视图未被过滤时,尝试ViewPanelComponent.getEntryCount()。在你的情况下,temprows.getEntryCount() – 2013-02-23 08:36:08