Repeat Control

  • Автор темы 11BOSS11
  • Дата начала
1

11BOSS11

#1
Можна ли в репит контрол загнать колекцию документов и высвечивать документы как в виде, чтобы были столбци(в которые будет заносится инфа с определенных полей ) ??
 

Zeka

Well-known member
01.09.2009
219
0
#2
Можна ли в репит контрол загнать колекцию документов и высвечивать документы как в виде, чтобы были столбци(в которые будет заносится инфа с определенных полей ) ??
Проще некуда ;)
В репите в AllProperties->data->value вбиваешь источник данных (какая-либо колекция).
Например нечто подобное:
Код:
var v = database.getView("myView");
v.getAllDocumentsByKey("testKey");
Там же в AllProperties->data указываешь var - имя переменной в которой будут храниться документы. Например "currentRow".
Далее во внутрь репита добавляешь поле и у него на табе Value выбираешь JavaScript (через Expresion Language или Simple Data Binding тоже можно связать поле) и указываешь currentRow.getItemValue("ItemName").
 
1

11BOSS11

#3
у меня есть строеный вид в Хпеж в нем сортированые столбци, и есть репит контрол ниже, оба они используют документы с одинакового вида.
И когда я нажываю сортировку в виде по орпеделенному столбцу, то в репите тоже все сортируется.. странно как то..
в чем может быть проблема? :fuckyou:
 
1

11BOSS11

#4
как на жава скрипет мне вернуть в репит контрол колекцию документов обобраных по двум разным формам?
допустим: doc и pr :fuckyou:
 
1

11BOSS11

#5
еще вопросик:
как сформировать колекцию документов для репит контрола с документов по двум формам, находящимся в разных базах?? :fuckyou:
 

Zeka

Well-known member
01.09.2009
219
0
#6
у меня есть строеный вид в Хпеж в нем сортированые столбци, и есть репит контрол ниже, оба они используют документы с одинакового вида.
И когда я нажываю сортировку в виде по орпеделенному столбцу, то в репите тоже все сортируется.. странно как то..
в чем может быть проблема? :fuckyou:
Что значит документы с одинакового вида?

Попробуй сделать отдельные Datasource для встроеного вида и для репита, и для одного из Datasource укажи ignoreRequestParams=true.
 
1

11BOSS11

#7
Что значит документы с одинакового вида?

Попробуй сделать отдельные Datasource для встроеного вида и для репита, и для одного из Datasource укажи ignoreRequestParams=true.
с одного итожо же вида...просто я сделал вид с помощю ВЮконтрола, а теперь пытаюсь сделать аналог с помощю репитконтрола..

чтото я не наблюдаю такого параметра: ignoreRequestParams=true. в репет контроле.. :fuckyou:
 

Zeka

Well-known member
01.09.2009
219
0
#8
как на жава скрипет мне вернуть в репит контрол колекцию документов обобраных по двум разным формам?
допустим: doc и pr :fuckyou:
еще вопросик:
как сформировать колекцию документов для репит контрола с документов по двум формам, находящимся в разных базах?? :blink:
Репеат позволяет отбразить колекцию ЛЮБЫХ java объектов.
Это может быть:
колекция NotesDocumen'от
колекция NotesViewItem'от
колекция явовских объектов (Bean'ов) - простейший пример java.util.TreeSet содержащий несколько стрингов String.

Репит соответственно для каждого объекта сгенерирует интерфейс который и отобразится пользователю в броузере.

Для того чтобы отобразить в одном репите документы из нескольких вьювов надо в Repeat->Binding data source->Java Script вбить примерно следующее:
Код:
var view1 = database.getView("RegistrationTasks");
var dc1 = view1.getAllDocumentsByKey("Key1");
var view2 = database.getView("LabTasks");
var dc2 = view2.getAllDocumentsByKey("Key2");
dc1.merge(dc2);
return dc1
Соответственно view1 и view2 могут находиться в различных базах!!!


Добавлено:
с одного итожо же вида...просто я сделал вид с помощю ВЮконтрола, а теперь пытаюсь сделать аналог с помощю репитконтрола..

чтото я не наблюдаю такого параметра: ignoreRequestParams=true. в репет контроле.. :(
Он не в репит контроле, а в датасоурсе - All Properties->data->dominoView[x].ignoreRequestParams.
Поэтому и надо сделать два отдельных датасоурса.
 

hosm

* so what *
18.05.2009
2 442
6
#9
Соответственно view1 и view2 могут находиться в различных базах!!!
Команда dc1.merge(dc2) разве позволяет оперировать объектами из разных БД?

Добавлено:
merge Usage
The document or documents being applied by this method must be in the same database as the original collection. Otherwise, this method returns the error "the specified note or notes do not exist in the database" or, if a note ID was passed to the method that matches a note ID in the original collection's database, the method uses the unintended document.
 

Zeka

Well-known member
01.09.2009
219
0
#10
Команда dc1.merge(dc2) разве позволяет оперировать объектами из разных БД?
Вот он опыт... :fuckyou:

Значит для объединения двух колекций доскументов из разных баз надо использывать какой-нибудь другой способ.
Вечерком напишу.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 805
21
#11
Хм... в коллекцию по моему никак...
Тут танцы с бубнами... 2 коллекции и обрабатывать каждую по очереди...
 

Zeka

Well-known member
01.09.2009
219
0
#12
Мда.... Хотел порекламировать xPages, что бы народ активнее их изучал и этот подворум ожил. А лотус мне такую пакость с этим documentColection.merge(documentColection) подсунул.
Точно помню, в какой-то рекламке очень сильно акцентировалось внимание как раз на возможносте в одном Repeat Control отображать докменты из разных вьювов/баз.
Но как это сделать "по человечески" в рекламной статье разумеется написано не было.
Хотя, может там упоминались только вьювы....

Вобщем, если вьювы в одной базе, то dc1.merge(dc2) прекрасно работает. Если вьювы в разных база, то возможен такой вариант:

Код:
var result = new java.util.Vector();

var v = database.getView("viewName");
var ec = v.getAllEntries();

var e = ec.getFirstEntry();
while(e != null){
result.add(e);	
e = ec.getNextEntry();	
}


var db2 = session.getDatabase(null, "db2.nsf");
v = db2.getView("otherViewName")
ec = v.getAllEntries();

e = ec.getFirstEntry();
while(e != null){
result.add(e);	
e = ec.getNextEntry();	
}

return result
Ну а в сам репит вставляем:
Код:
<xp:inputText id="inputText1" value="#{java script:row.getDocument().getItemValueString('f1')}"></xp:inputText>
 
1

11BOSS11

#13
всем спасибо!!=) :)
С дейта сорсом разобралсО))

А теперь нужно как то сделать стилистику и функционал репита такой же как и в въюхе(или макс приблеженный)..

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

11BOSS11

#14
я сделал репит в репите,. получилось,что первый репит идет для титлов колумов, а вот как сделать чтобы при их нажатии можна былобы сортировать второй репит?
 
1

11BOSS11

#15
всем спасибо!!=) :)
С дейта сорсом разобралсО))

А теперь нужно как то сделать стилистику и функционал репита такой же как и в въюхе(или макс приблеженный)..

как сделать категорихированные столбцы, пейджер, чек боксовые столбцы и т.д.??
может у кого нить пример есть подобный??
ну пейджер я прикрутил...
нужна категоризация и сортировка по определенным столбцам, если это вообще возможно в репите!?? <_<
 
1

11BOSS11

#18
Нашёл как это сделать по человечески?
Потому что мною приведённый вариант всё же ближе к "танцам с бубнами"...
ну вот таким вотс вариантом все нормлаьно работает, зачем ешо чтото придумівать?:

Код:
var view1 = database.getView("RegistrationTasks");
var dc1 = view1.getAllDocumentsByKey("Key1");
var view2 = database.getView("LabTasks");
var dc2 = view2.getAllDocumentsByKey("Key2");
dc1.merge(dc2);
return dc1


Добавлено:
ну вот таким вотс вариантом все нормлаьно работает, зачем ешо чтото придумівать?:

Код:
var view1 = database.getView("RegistrationTasks");
var dc1 = view1.getAllDocumentsByKey("Key1");
var view2 = database.getView("LabTasks");
var dc2 = view2.getAllDocumentsByKey("Key2");
dc1.merge(dc2);
return dc1
а если для обектов с разніх баз колекции можно не место мержа апендом склеивать.
 
1

11BOSS11

#19
еще один вопросик:
как доступатся к n-й строчке репита? можно ли менять местами строчки репитконтрола?
 
1

11BOSS11

#20
Код:
var result = new java.util.Vector();

var v = database.getView("viewName");
var ec = v.getAllEntries();

var e = ec.getFirstEntry();
while(e != null){
result.add(e);	
e = ec.getNextEntry();	
}


var db2 = session.getDatabase(null, "db2.nsf");
v = db2.getView("otherViewName")
ec = v.getAllEntries();

e = ec.getFirstEntry();
while(e != null){
result.add(e);	
e = ec.getNextEntry();	
}

return result
да уж... такой вариант чегото не хочет работать, ошибка в 23 строке, возварщает 0 доков врезальте.. :gigi:
как же его можно подругому сделать? :what?: