【问题标题】:Xpages DataView Control and custom sort for search resultsXpages DataView 控件和搜索结果的自定义排序
【发布时间】:2015-06-14 09:42:56
【问题描述】:

我需要为 FTSearch 创建自定义排序(可以来自视图,结果存储在 viewEntryCollection 中或来自数据库,在 NotesDocumentCollection 中)。该顺序与在文档的主题和类别中找到的搜索词的数量有关。该部分运行良好,但我不确定该函数需要返回什么对象类型才能在数据视图控件中使用结果。它是 NotesDocumentCollection、JavaScript 数组还是任何其他对象?以及如何在不同的列中推送/访问我想要的值?

我见过很多对搜索结果进行排序的代码,但它们都对特定的列进行排序...

谢谢你:D

【问题讨论】:

  • 问题是DataView 似乎需要一个Notes 视图。我想弄清楚的是,是否可以使用 DataView 显示自定义排序的搜索结果。
  • 所以现在我有一个包含一些属性的 JS 对象,其中一个是 NotesDocuments 数组,按照我想要的方式排序。我可以将它用作数据视图上的数据源吗?如果我使用重复控件,我将如何从该数组访问文档的字段?谢谢
  • 你好。不确定您可以在数据视图中使用除视图之外的任何内容。在重复中,您可以将文档数据源添加到重复中的面板并访问数据源中的值。或者您可以使用 x.getDocument().getItemValueString("fld") 直接访问重复中的值,其中 x 是重复变量。
  • Thomas,我最终做的正是 htat:使用数据表而不是数据视图,并使用 Notesdocument 的方法获取我的值,因为这是存储在结果数组中的对象.这太糟糕了,因为应用程序经常使用 DataView,所以在相同类型的对象中显示结果对用户来说会很棒。感谢您的帮助:D

标签: xpages xpages-ssjs xpages-extlib


【解决方案1】:

我找到了一种方法,这是我的帖子:http://www.bleedyellow.com/blogs/DominoHerald/entry/data_view_with_a_notesviewentrycollection?lang=en_us

Brad Balassaitis 也有一个帖子链接在那里。

我后来发现(在完成上述操作之后)您可以创建一个 NotesViewEntryCollection 并在其上调用 FTSeach。

干杯, 布赖恩

Rodigo 建议不要链接到答案,所以这是我上面链接的帖子的文本:

带有 NotesViewEntryCollection 的数据视图 布赖恩·摩尔 | 1 月 20 日 | 4 厘米 | 388 次访问 所以我一直想使用日期视图有一段时间了,但我没有时间坐下来解开谜题。而且(这里的肥皂盒)给出的例子非常复杂。我确实有一个基于 Brad 工作的样本,我将发布。但是当我把它放在一起时,这里有一个花絮。 使用数据视图时,您只能选择 Domino 视图。我想看看你是否可以通过收藏来做到这一点。事实证明你可以。我所做的是(在我奇怪的发现过程中)我基于视图中所有条目的 NotesViewEntryCollection 创建了一个 DataTable。我从中复制了节点并替换了 dataView 中的节点。页面呈现。我只放了一个寻呼机,看看它是否具有完整的功能,并且它正在工作,所以我怀疑其他各种东西也会如此。 这是整个 XPage。它应该适合您,只需更改视图名称和您获得的字段。另外,如果您还没有开始使用数据视图,这是一个开始:)

    <?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">

    <xe:dataView
        id="dataView1"
        var="rowData"><xp:this.facets>
    <xp:pager
        layout="Previous Group Next"
        partialRefresh="true"
        id="pager1"
        xp:key="pagerTopLeft">
    </xp:pager></xp:this.facets>
        <xp:this.value><![CDATA[#{javascript:var nView:NotesView=database.getView('Name');
var nVEC:NotesViewEntryCollection=nView.getAllEntries();
return nVEC;}]]></xp:this.value>
        <xe:this.summaryColumn>
            <xe:viewSummaryColumn value="#{javascript:rowData.getDocument().getItemValueString('Subject');}"></xe:viewSummaryColumn>
        </xe:this.summaryColumn>
    </xe:dataView></xp:view>

干杯, 布赖恩

【讨论】:

  • 避免链接到答案,因为他们可能不会在未来工作,而是在自己的答案中指出它的最相关方面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 2020-03-16
  • 2018-07-30
  • 2010-11-25
  • 1970-01-01
  • 2011-09-04
相关资源
最近更新 更多