0

我想在我的 Java 类中使用 com.ibm.xsp.model.domino.DominoViewData() 来过滤和排序多米诺视图数据,但我不确定如何去做。

那里没有很多示例,我发现的大多数示例都是在 xPage 或数据表上使用它。

在 JAVA 课程中,我想:

  • 创建一个新的 DominoViewData 对象。
  • 设置视图名称。
  • 设置要排序的列。
  • (可选)设置过滤器。
  • 最后,检索 ViewEntryCollection 以进行进一步处理。

DominoViewData 类可以这样使用吗?

感谢您的帮助,任何示例将不胜感激。

——杰夫

4

1 回答 1

1

只要您在 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.你必须创建你的数据源并将它们添加到一个组件,fe view root

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)

于 2013-03-23T11:56:42.613 回答