如何为显示字母而不是数字的视图创建寻呼机?

时间:2012-07-11 19:31:56

标签: xpages

我需要为视图提供按字母顺序排列的寻呼机。我没有看到任何样本或自定义寻呼机解决这个问题。我认为这将是一件非常普遍的事情。

MJ

2 个答案:

答案 0 :(得分:5)

我不太确定你的“字母寻呼机”是什么意思,但我想你可能正在寻找某种字母导航器,就像我们在Notes客户端内的个人NAB中那样,对吗?

如果是这样,你不是真的在寻找寻呼机,而是寻找按字母顺序排列的视图过滤器。这是实现目标的一种方式:

  • 创建一个面板,给它一个独特的ID,如“viewContainer”或 一些东西。将您的视图面板放入面板;当然,视图的主要排序顺序必须是字母
  • 在“viewContainer”上方创建第二个面板,此处不需要ID
  • 在这个新面板中重复并将其绑定到一个新的JavaScript数组,如:

    新数组(“a”,“b”,“c”,...,“x”,“y”,“z”);

  • 输入重复的集合名称,例如“letter”

  • 在重复内部放置一个链接控件。链接的标签将是 计算到重复的集合名称,即“letter”。
  • 将一个onclick事件分配给链接,将sessionScope变量设置为当前集合名称的值,如下所示:

    sessionScope.filter = letter;

  • 将事件的刷新模式设置为partial,以便刷新viewContainer面板

  • 在viewContainer中突出显示您的视图控件。在其数据属性中查找标记为“按列值过滤”的属性字段并进行计算。输入以下代码:

    sessionScope.filter;

就是这样。

修改 当然,您可以从视图本身动态构建repeat的数据源数组。因此,您可以使用以下内容来代替构建静态a-to-z数组:

@Unique(@Left(@DbColumn(@DbName(), "yourLookupView", viewColNumber), 1));

那应该返回一个只包含你视图中真实字母的数组。

另外,您可以在重复之外重置过滤器以显示所有条目。它将像onclick事件的重复链接一样构建,调用此代码:

sessionScope.filter=null;

享受!

答案 1 :(得分:1)

我会这样做:制作一个按公式@Left( value; 1)分类的视图。然后通过repeat或一些ExtLib组件(链接列表,导航器,菜单)将@DbColumn的结果呈现为寻呼机。每个链接将显示的视图限制为“单个类别”或跳转到“以...开头”字符。