能否在JAVA类中使用xPages DominoViewData?

能否在JAVA类中使用xPages DominoViewData?,xpages,xpages-extlib,Xpages,Xpages Extlib,我想在Java类中使用com.ibm.xsp.model.domino.DominoViewData()对domino视图数据进行过滤和排序,但我不知道如何进行 这里没有太多的例子,我发现大多数都是在xPage或数据表上使用它 在JAVA类中,我想: 创建新的DominoViewData对象 设置视图名称 设置要排序的列 可以选择设置过滤器 最后,检索ViewEntryCollection以进行进一步处理 DominoViewData类可以这样使用吗 谢谢你的帮助,任何例子都将不胜感激 --

我想在Java类中使用com.ibm.xsp.model.domino.DominoViewData()对domino视图数据进行过滤和排序,但我不知道如何进行

这里没有太多的例子,我发现大多数都是在xPage或数据表上使用它

在JAVA类中,我想:

  • 创建新的DominoViewData对象
  • 设置视图名称
  • 设置要排序的列
  • 可以选择设置过滤器
  • 最后,检索ViewEntryCollection以进行进一步处理
DominoViewData类可以这样使用吗

谢谢你的帮助,任何例子都将不胜感激


--Jeff

只要您在XPage应用程序中使用它们,这是可能的。我不确定您不直接访问视图会有什么好处,但下面是代码:

1.您需要一个助手类来访问表格数据模型

/**
 * Returns the tabular data model from a datasource
 * 
 * @author Christian Guedemann, Sven Hasselbach
 * @param dsCurrent
 *   datasource to get the tdm from
 * @param context
 *   current FacesContext instance
 * @return
 *   TabularDataModel
 */
public static TabularDataModel getTDM(DataSource dsCurrent, FacesContext context) {
    try {
        if (dsCurrent instanceof ModelDataSource) {
            ModelDataSource mds = (ModelDataSource) dsCurrent;
            AbstractDataSource ads = (AbstractDataSource) mds;
            ads.load(context);
            DataModel tdm = mds.getDataModel();
            if (tdm instanceof TabularDataModel) {
                TabularDataModel tds = (TabularDataModel) tdm;
                return tds;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
2.您必须创建数据源并将其添加到组件,例如视图根

DominoViewData dvd = new DominoViewData();
dvd.setViewName( "YOUR VIEW NAME" );
dvd.setComponent( FacesContext.getCurrentInstance().getViewRoot() );
3.现在您可以向数据源添加过滤器选项或任何其他选项,例如:

dvd.setSortOrder( "ascending" );
dvd.setSortColumn( "NAME OF COLUMN" );
4.然后访问数据源的TDM,获取第一个条目,您就有了父项的句柄,即ViewNavigator

TabularDataModel tdm = getTDM( dvd, FacesContext.getCurrentInstance() );
tdm.setDataControl( new UIDataEx() );
Entry noiEntry = (Entry) tdm.getRowData();
ViewNavigator nav = null;
try {
    nav = (ViewNavigator) noiEntry.getParent();
    System.out.println( "NAV COUNT: " + nav.getCount() );
    nav.recylce();
} catch (NotesException e) {
    e.printStackTrace();
}

(好的,您现在有了一个ViewNavigator而不是ViewEntryCollection)

您不必担心视图变得无效,这不是一个好处吗?斯文,谢谢您的回答和代码。实际上是你关于查看数据对象的博文引起了我的疑问!:-)