Javascript Xpages-在重复控件中显示筛选的文档集合

Javascript Xpages-在重复控件中显示筛选的文档集合,javascript,xpages,Javascript,Xpages,我在repeat控件的Bind data部分中有以下代码。我已将集合名称命名为“docs”。我似乎无法在视图控件中显示任何值。计算字段-docs.getItemValue(“状态”)。知道我哪里出错了吗 var v:NotesView = database.getView("xpageReports"); viewScope.status="" // Created After var after = viewScope.crafter if(after==null)after = @Date

我在repeat控件的Bind data部分中有以下代码。我已将集合名称命名为“docs”。我似乎无法在视图控件中显示任何值。计算字段-docs.getItemValue(“状态”)。知道我哪里出错了吗

var v:NotesView = database.getView("xpageReports");
viewScope.status=""

// Created After
var after = viewScope.crafter
if(after==null)after = @Date(2000, 1, 1, 0, 0, 0);  

// Created Before
var before = viewScope.crbefore 
if(before==null) before = @Date( @Tomorrow() );

// Build Date Range
var dr = session.createDateRange(after, before);

// Status
var status = viewScope.crstatus;
if(status =="-select-") status =""
// Department
var department = viewScope.crdepartment;
if(department =="-select-") department=""

// Unit
var unit = viewScope.crunit;
if(unit ="-select-") unit=""

var dc:NotesDocumentCollection = v.getAllDocumentsByKey(dr);
if (dc.getCount() == 0) {
    viewScope.status = "0";
    return;
}

var count = 0
var doc:NotesDocument = dc.getFirstDocument();
while (doc != null) {
    var tmpdoc = dc.getNextDocument();
    var remove = 0

    @If(status!="",@If(doc.getItemValueString("Status")!=status,remove = remove + 1,""),"")
    @If(department!="",@If(doc.getItemValueString("Department")!=department,remove = remove + 1,""),"")
    @If(unit!="",@If(doc.getItemValueString("Unit")!=unit,remove = remove + 1,""),"")
    if(remove!=0) dc.deleteDocument(doc)

    doc.recycle();


    doc = tmpdoc;

    }

return dc

我更改了代码以返回文档的noteIDs,并将其放在repeat控件的Bind Data部分中,并将集合名称设置为docs


然后我在repeat控件中放置了一个面板,将数据源设置为文档的形式,并将documentid字段设置为computed and entered docs。现在,我放在面板中的任何计算字段都可以绑定到表单字段

我更改了代码以返回文档的noteID,并将其放置在repeat控件的Bind Data部分中,并将集合名称设置为docs


然后我在repeat控件中放置了一个面板,将数据源设置为文档的形式,并将documentid字段设置为computed and entered docs。现在,我放在面板中的任何计算字段都可以绑定到表单字段

据我所知,您的问题是您希望在repeat控件的视图中显示文档子集-您的筛选应该按日期范围进行。 我通过使用以下逻辑完成了类似的工作:

  • 我的自定义控件/xpage的数据源是一个视图(在您的示例中是视图“xpageReports”),其数据源名称为“view1”
  • 在数据源属性中,有三个选项可以缩小文档集的范围:“按类别名称筛选”、“按列值筛选”和“在视图中搜索结果”。在我的例子中,我使用了“在视图中搜索结果”(在具有全文索引的数据库中)。 因此,您可以使用JavaScript创建如下查询:

  • '[dateAfter]>=01.01.2000和[dateAfter]据我所知,您的问题是您希望在重复控件的视图中显示文档子集-您的筛选应按日期范围进行。
    我通过使用以下逻辑完成了类似的工作:

  • 我的自定义控件/xpage的数据源是一个视图(在您的示例中是视图“xpageReports”),其数据源名称为“view1”
  • 在数据源属性中,有三个选项可以缩小文档集的范围:“按类别名称筛选”、“按列值筛选”和“在视图中搜索结果”。在我的例子中,我使用了“在视图中搜索结果”(在具有全文索引的数据库中)。 因此,您可以使用JavaScript创建如下查询:

  • '[dateAfter]>=01.01.2000和[dateAfter]重复的具体问题是什么?我认为您需要确保查找的值类型与视图中第一列中的值相同。我从未尝试过使用日期查找值。我将通过将查找值和视图值转换为文本来解决此问题,然后看看是否可以首先使用。我不知道,它不会显示任何值。查找工作正常,我可以让它打印出找到的文档数,但我似乎无法使任何文档值出现在重复控制中。您在哪里使用上面发布的脚本?xpage和/或repeat的数据源是什么?我将repeat控件的数据绑定更改为Javascript并添加了这个。页面的数据源是原始表单重复的具体问题是什么?我认为您需要确保查找的值类型与视图中第一列中的值相同。我从未尝试过使用日期查找值。我将通过将查找值和视图值转换为文本来解决此问题,然后看看是否可以首先使用。我不知道,它不会显示任何值。查找工作正常,我可以让它打印出找到的文档数,但我似乎无法使任何文档值出现在重复控制中。您在哪里使用上面发布的脚本?xpage和/或repeat的数据源是什么?我将repeat控件的数据绑定更改为Javascript并添加了这个。页面的数据源是原始表单不要忘记在重复的数据源上将ignoreRequestParams设置为true。:)不要忘记在重复的数据源上将ignoreRequestParams设置为true:)谢谢你的回复。问题不在于过滤,因为过滤效果很好。我运行了许多测试,并将文档集合计数设置为viewScope变量。每次计数都是正确的。无论出于何种原因,在repeat控件中设置一个面板并在其中设置数据源似乎已经完成了回复的技巧。问题不在于过滤,因为过滤效果很好。我运行了许多测试,并将文档集合计数设置为viewScope变量。每次计数都是正确的。无论出于何种原因,在repeat控件中设置一个面板并在其中设置数据源似乎已经做到了这一点
    
    var v:NotesView = database.getView("xpageReports");
    var docIDs = ""
    
    // Created After
    var after = viewScope.crafter
    if(after==null)after = @Date(2000, 1, 1, 0, 0, 0);  
    
    // Created Before
    var before = viewScope.crbefore 
    if(before==null) before = @Date( @Tomorrow() );
    
    // Build Date Range
    var dr = session.createDateRange(after, before);
    
    // Status
    var status = viewScope.crstatus;
    if(status =="-select-") status =""
    // Department
    var department = viewScope.crdepartment;
    if(department =="-select-") department=""
    
    // Unit
    var unit = viewScope.crunit;
    if(unit =="-select-") unit=""
    
    var dc:NotesDocumentCollection = v.getAllDocumentsByKey(dr);
    if (dc.getCount() == 0) {
        return;
    }
    
    var count = 0
    var doc:NotesDocument = dc.getFirstDocument();
    while (doc != null) {
        var tmpdoc = dc.getNextDocument();
        var remove = 0
    
        @If(status!="",@If(doc.getItemValueString("Status")!=status,remove = remove + 1,""),"")
        @If(department!="",@If(doc.getItemValueString("Department")!=department,remove = remove + 1,""),"")
        @If(unit!="",@If(doc.getItemValueString("Unit")!=unit,remove = remove + 1,""),"")
        if(remove==0) docIDs = docIDs = docIDs + doc.getNoteID()+";"
    
        doc.recycle();
        doc = tmpdoc;
    
    }
    return @Explode(docIDs,";")