• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Repeat Control

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

11BOSS11

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

Zeka

Можна ли в репит контрол загнать колекцию документов и высвечивать документы как в виде, чтобы были столбци(в которые будет заносится инфа с определенных полей ) ??
Проще некуда ;)
В репите в 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

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

11BOSS11

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

11BOSS11

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

Zeka

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

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

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

11BOSS11

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

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

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

Zeka

как на жава скрипет мне вернуть в репит контрол колекцию документов обобраных по двум разным формам?
допустим: 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.
Поэтому и надо сделать два отдельных датасоурса.
 
H

hosm

Соответственно 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.
 
Z

Zeka

Команда dc1.merge(dc2) разве позволяет оперировать объектами из разных БД?
Вот он опыт... :fuckyou:

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Хм... в коллекцию по моему никак...
Тут танцы с бубнами... 2 коллекции и обрабатывать каждую по очереди...
 
Z

Zeka

Мда.... Хотел порекламировать 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

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

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

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

11BOSS11

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

11BOSS11

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

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

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

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

11BOSS11

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

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

Код:
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

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

11BOSS11

Код:
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?:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!