我很确定这是不可能的,但无论如何我都会问。
我正在建立一个处理病历的系统。新用户需要能够搜索患者,并且一旦找到请求就可以从管理员访问他们的文件。
即使用户无权访问,我如何显示所有文档的列表?它们只有在添加到“读者”字段后才会出现在视图中,这会使搜索失败。
我的计划是创建2个文档 - 原始患者文档和包含名称的精简文档,仅用于搜索的地址
有没有更好的方法可以做到这一点,或者2文档的方法是什么?
答案 0 :(得分:4)
使用sessionAsSigner获取数据库签名者权限的数据库对象并对其进行搜索。这将为您提供一组文档,这些文档可以使用数据表与视图类似地显示。
示例(对于中等视图效果很好 - 对于较大的视图,可能需要一些optymalization):
<xp:panel id="viewPanel" styleClass="usersPanel">
<xp:this.dataContexts>
<xp:dataContext var="usersList">
<xp:this.value><![CDATA[#{javascript:
var uview = sessionAsSigner.getCurrentDatabase().getView("someView");
uview.FTSearch("Some query");
return uview.getAllEntries();
}]]></xp:this.value>
</xp:dataContext>
</xp:this.dataContexts>
<xp:pager partialRefresh="true" layout="Previous Group Next"
xp:key="headerPager" id="pager2" for="usersList">
</xp:pager>
<xp:dataTable id="usersList" rows="30"
var="entry" value="#{usersList}">
<xp:column id="column1">
<xp:this.facets>
<xp:span xp:key="header"
styleClass="frameworkViewColumnHeader">
Użytkownik
</xp:span>
</xp:this.facets>
<xp:text escape="true" id="computedField1"
value="#{javascript:entry.getColumnValues().get(0)}">
</xp:text>
</xp:column>
<xp:column id="column2">
<xp:this.facets>
<xp:span xp:key="header"
styleClass="frameworkViewColumnHeader">
Instytucja
</xp:span>
</xp:this.facets>
<xp:text escape="true" id="computedField2"
value="#{javascript:entry.getColumnValues().get(1)}">
</xp:text>
</xp:column>
</xp:dataTable>
</xp:panel>