回收和NotesViewNavigator GetNextDocument / GetNextCat

2019-11-01 16:08发布

我该怎么做了GetNextDocument或GetNextCategory循环在NotesViewNavigator? 无论是需要一个参数,所以你不能用使用临时变量的传统方法预先获得下一个文件就像你可能在一个视图。

我想解决办法是只使用GETNEXT与argmenumnt但GetNextDocument / GetNextCategory仍然可以使用?

我得到的错误是第20行没有代码运行正常循环。 据我了解回收销毁的对象,所以我可以理解为错误的原因。 我questition是,如果有解决这个另一种方式?

[类型错误]异常发生呼叫方法NotesViewNavigator.getNextDocument()零发生在管线20

 1: var viewName = "vwParticipantsProjectIDEquipmentIDUsername";  
 2: 
 3: 
 4: var v:NotesView = database.getView(viewName);
 5: var nav:NotesViewNavigator = v.createViewNavFromCategory(sessionScope.get("ExportProjectID"));
 6: 
 7: 
 8: var viewEnt:NotesViewEntry = nav.getFirstDocument();
 9: 
 10: while (viewEnt != null)
 11: {  
 12: 
 13:    if (viewEnt.isDocument())
 14:    {
 15:        
 16:        var doc:NotesDocument = viewEnt.getDocument();
 17:    }       
 18: 
 19:    viewEnt.recycle();
 20:    viewEnt = nav.getNextDocument();
 21: }

Answer 1:

这是我倾向于使用模式:

var documentEntry = nav.getFirstDocument();
while( documentEntry != null ){
  var nextDocumentEntry = nav.getNextDocument();
  // do stuff
  documentEntry.recycle();
  documentEntry = nextDocumentEntry;
}


Answer 2:

你为什么不尝试应用旧格局是这样的:

var viewName = "vwParticipantsProjectIDEquipmentIDUsername",
    v:NotesView = database.getView(viewName),
    nav:NotesViewNavigator = v.createViewNavFromCategory(sessionScope.get("ExportProjectID")),
    viewEnt:NotesViewEntry = nav.getFirstDocument(),
    tmp:NotesViewEntry;
while (viewEnt !== null)
{  
    if (viewEnt.isDocument())
    {
        var doc:NotesDocument = viewEnt.getDocument();
    }
    tmp = viewEnt;
    viewEnt = nav.getNextDocument();
    tmp.recycle();
}

我没有测试它,但我想这工作...



文章来源: Recycle and GetNextDocument / GetNextCategory in NotesViewNavigator?