1

系统信息:
  测试服务器:
    domino 9 on Windows 7
    extension libraries version 900v00_02.20130515-2200
  development server:
    domino 8.5.3 FP3 on windows server 2008
    extension libraries version 853.20121022-1354
  development client
    Notes 8.5.3 FP3 on windows 7
    extension libraries version 853.20121022-1354使用的
  浏览器
    IE8*、IE9
    Firefox
    chrome
      * = 项目定义的浏览器

问题:
  开发了一个门户应用程序,以便最终用户从选择(从组合框中)中选择所需的数据库并显示该数据库。此门户中显示的所有数据库都使用相同的设计模板,但高度可配置。为了保持纤薄的设计,并防止需要无数隐藏的视图面板,使用了扩展库动态视图面板控件。
  我目前遇到的部分问题是在第一列或第二列中使用了 \ 字符以创建子类别。不知道这个字符被使用了多少次,也不知道可能有多少子类别。对于普通的笔记客户端,这不是问题,因为视图将始终正确显示。使用 xe:dynamicViewPanel 或 xp:viewPanel 控件时,情况并非如此。而不是缩进新的子类别,它们都直接显示在彼此的下方。然而,关闭主类别将关闭子类别。我还测试了这是否是在新的 notes/domino 9 环境中更正的错误,但是,它仍然存在。

问题:
  有没有人知道如何解决显示这些类别/子类别的问题,或者可能是另一种显示信息的方式,使其看起来像背景视图?如果可以的话,我宁愿使用动态视图面板。

提前谢谢你
格雷格

4

1 回答 1

3

分类视图不是为 Web 构建的。我将创建一个您使用视图导航器提供的 bean,并用列表/树组合替换视图。有一些 UI 灵感可供查看。在您的 bean 中,您可以根据自己的喜好处理视图。

离开我的脑袋(可能无法编译):

public class SampleClass {

private final Map<String,List<List<String>>> viewData = new HashMap<String,List<List<String>>>();

// it isn't a MANAGED bean since in the constructor
// there's a parameter - use it in a ObjectDataSource or a datacontext
public SampleClass (lotus.domino.ViewNavigator vn) {

    try {
        ViewEntry ve = vn.getFirst();
        while (ve != null) {
            ViewEntry veNext = vn.getNextSibling(ve);
            this.createCategoryAndEntries(ve);
                            ve.recycle();
            ve = veNext;
        }
    } catch (NotesException e) {
        e.PrintStacktrace();
    }
}

private void(createCategoryAndEntries(ViewEntry ve) {
   String cateogry = ve.getColumnValues()[0]; // You might need more columns
   List<List<String>> catMembers = new ArrayList<List<String>>();
   int subEntryCount = ve.getChildCount();
   // If that's bigger than 0 get the children, each makes a list entry
   // containing a list with all the column values
   this.viewData.put(category,catMembers);

}   

public Collection<String> getKeys() {
    return this.viewData.keySet();
}

public List<List<String>> getEntries(String category) {
    return this.viewData.get(category);
  } 
}

您将使用 getKeys() 来填充您的道场树 - 您需要自己处理子类别的拆分。诀窍是将树中的类别显示为拆分值,但返回单个字符串(因为它实际上存储在文档中) 然后可以将数据表或重复控件绑定到 getEntries(...) 并将列绑定到个别条目。

于 2013-07-16T15:38:51.977 回答