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.データソースを作成してコンポーネントに追加する必要があります。ビュールートを参照してください。

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();
}

(OK、ViewEntryCollectionの代わりにViewNavigatorがあります)

于 2013-03-23T11:56:42.613 に答える