View XPages中的动态子类别(动态视图面板控件)

View XPages中的动态子类别(动态视图面板控件),view,panel,xpages,View,Panel,Xpages,系统信息:   测试服务器:     Windows 7上的Domino9     扩展库版本900v00_02.20130515-2200   开发服务器:     windows server 2008上的domino 8.5.3 FP3     扩展库版本853.20121022-1354   开发客户端     注意windows 7上的8.5.3 FP3     扩展库版本853.20121022-1354   使用的浏览器     IE8*,IE9     Firefox     铬

系统信息:
  测试服务器:
    Windows 7上的Domino9
    扩展库版本900v00_02.20130515-2200
  开发服务器:
    windows server 2008上的domino 8.5.3 FP3
    扩展库版本853.20121022-1354
  开发客户端
    注意windows 7上的8.5.3 FP3
    扩展库版本853.20121022-1354
  使用的浏览器
    IE8*,IE9
    Firefox
    铬
      * = 项目定义浏览器

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

问题:
  对于如何解决显示这些类别/子类别的问题,或者以另一种方式显示信息,使其看起来像背景视图,有人有什么想法吗?如果可以的话,我宁愿使用动态视图面板

提前谢谢你

Greg

分类视图不是为web构建的。我将用视图导航器创建一个bean,并用列表/树组合替换视图。还有很多要结帐的。在bean中,您可以根据自己的喜好处理视图

在我脑海中(可能没有编译):

公共类SampleClass{
private final Map viewData=new HashMap();
//它不是托管bean,因为在构造函数中
//有一个参数-在ObjectDataSource或datacontext中使用它
公共SampleClass(lotus.domino.ViewNavigator vn){
试一试{
ViewEntry ve=vn.getFirst();
while(ve!=null){
ViewEntry veNext=vn.getNextSibling(ve);
这是。CreateContegoryanDentries(ve);
ve.recycle();
ve=veNext;
}
}捕获(注e){
e、 PrintStacktrace();
}
}
私有void(createCategoryAndEntries(ViewEntry ve){
String cateogry=ve.getColumnValues()[0];//您可能需要更多列
List catMembers=new ArrayList();
int subEntryCount=ve.getChildCount();
//如果大于0,则获取子项,每个子项都创建一个列表条目
//包含包含所有列值的列表
this.viewData.put(类别、catMembers);
}   
公共集合getKeys(){
返回此.viewData.keySet();
}
公共列表getEntries(字符串类别){
返回此.viewData.get(类别);
} 
}

您可以使用getKeys()填充dojo树—您需要自己处理子类别的拆分。诀窍是将树中的类别显示为拆分值,但要返回单个字符串(因为它实际存储在文档中),datatable或repeatcontrol就可以绑定到getEntries(…)在新版本中,在注释类别中使用反斜杠的良好注释标准很麻烦。例如,复合视图(如邮件模板中的视图)无法正确显示子类别,也无法在XPages中显示标准视图控件。如果客户可以接受,我倾向于将\替换为/或>。我知道,这会产生不同的结果,但有助于快速查找文档。您是否碰巧有这样一个bean的示例,只是为了让我从正确的方向开始仅用于方向的粗略裁剪,添加在上面太棒了!!非常感谢您的帮助!我一直在研究您编写的代码,我有几个问题。首先,您使用的是哪个ViewNavigator类?我假设它是lotus.domino.local.ViewNavigator类,但我想确定一下。其次,我找不到OpportunityD的类etails或NSFUtil,是否有特定的jar文件需要手动添加到构建路径?(Notes/Domino8.5.3)OpportunityDetails是我的业务逻辑中的一个类,与您无关;-)。Nsf实用程序。
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);
  } 
}