2013-03-22 2 views
0

Я хотел бы использовать com.ibm.xsp.model.domino.DominoViewData() в своем классе Java для фильтрации и сортировки данных представления домино, но я не уверен, как это сделать.Можете ли вы использовать xPages DominoViewData в классе JAVA?

Существует не так много примеров, и большинство из них я нашел, используя его на xPage или с таблицей данных.

В классе JAVA, я хотел бы:

  • Создать новый объект DominoViewData.
  • Задайте имя вида.
  • Установите столбец для сортировки.
  • Опционально установите фильтр.
  • Наконец, вы получите ViewEntryCollection для дальнейшей обработки.

Можно ли использовать класс DominoViewData таким образом?

Спасибо за вашу помощь, и любые примеры будут оценены.

- Джефф

ответ

1

Пока ваш используют их в приложении XPage, это возможно. Я не уверен, какие преимущества вы будете иметь вместо доступа вида непосредственно, но вот код:

1.You нужен вспомогательный класс для доступа к модели данных табличного

/** 
* 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.You есть создать свой источник данных и добавить их в компонент, fe корневого вид

DominoViewData dvd = new DominoViewData(); 
dvd.setViewName("YOUR VIEW NAME"); 
dvd.setComponent(FacesContext.getCurrentInstance().getViewRoot()); 

3.Now вы можете добавить параметры фильтра или какие-либо дополнительные опции для вашего источника данных, F.E. это:

dvd.setSortOrder("ascending"); 
dvd.setSortColumn("NAME OF COLUMN"); 

доступа 4.После МВР из источника данных, получить первую запись, и у вас есть дескриптор родителя, 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 вместо of ViewEntryCollection)

+0

Неужели вам не нужно беспокоиться о том, что представление становится недействительным? – jjtbsomhorst

+0

Sven, Спасибо за ответ и код. Это было ваше сообщение в блоге о объектах View Data, которое заставило меня задать вопрос! :-) –

Смежные вопросы