Динамическое изменение View

Extraterrestrial

Well-known member
28.02.2008
266
0
#1
Меня интересует, как можно дать возможность пользователю динамически менять вид...
Во-первых, использовать Shared, private on first use, чтобы изменения у каждого были свои. Правда, насколько я помню, если нет прав дизайнера, то выскакивает ошибка при попытке, например, изменить формулу отбора. Но можно делать изменения агентом через RunOnServer, который подписан дизайнером?
Второй момент, это то, что нужно после изменения формулы отбора или колонки выйти из вида и зайти в него снова, чтобы эти изменения увидеть. Видимо можно используя notesUIView.Close и notesUIDatabase.OpenView? Правда, пока что не вышло...
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#2
вот посмотри тут как перегрузка вида делается на лету
_http://codeby.net/forum/threads/29582.html?view=findpost&p=135109

чтобы агент на сервере обработал вид, этот вид должен быть на сервере, на локальной реплике без форсирования доступа, по-идее, не нужны права дизайнера, т.к. человек получает полный доступ к базе...
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#3
вот посмотри тут как перегрузка вида делается на лету
_http://codeby.net/forum/threads/29582.html?view=findpost&p=135109
Это только для Embedded View? Embedded View - не совсем хорошая вещь. Например, там сортировки не работают... Может во фреймах что-то попробовать делать? В верхнем фрейме в форме действие, которое после изменения параметров вида переключает на другой вид, а потом возвращает на измененный, тогда, возможно, изменения отобразятся.
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#4
Может во фреймах что-то попробовать делать? В верхнем фрейме в форме действие, которое после изменения параметров вида переключает на другой вид, а потом возвращает на измененный, тогда, возможно, изменения отобразятся.
Такой вариант прокатил. Теперь только бы это еще заработало в варианте, когда агент меняет вид и когда вид типа Shared, private on first use.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#5
перестаньте пытаться сделать из LDN - РСУБД
все это будет сильно тормозить (перестройка индекса)
не надо делать универсально, можно подогнать под задачу
надо учитывать объем данных
может оказаться, что проще вносить изменения а РСУБД (через DECS например) и оттуда получать выборки
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#6
перестаньте пытаться сделать из LDN - РСУБД
все это будет сильно тормозить (перестройка индекса)
не надо делать универсально, можно подогнать под задачу
надо учитывать объем данных
может оказаться, что проще вносить изменения а РСУБД (через DECS например) и оттуда получать выборки
Да причем тут РСУБД-то? Я могу и на XPages тоже самое сделать. Не тормозит, всё ОК. У нас не тот объем данных, чтобы тормозило. Причем я так понимаю, что от размера выборки ещё зависит? Может данных и много, но выборка небольшая. В общем, теперь лишь бы это всё заработало с обновлением через агент и с private видами.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#7
Это только для Embedded View? Embedded View - не совсем хорошая вещь. Например, там сортировки не работают...
нет, то был просто пример, а перестроение вида не имеет отношения конкретно к внедрению вида...
зы: какие это сортировки не работают во внедренном виде?! О.о
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#8
нет, то был просто пример, а перестроение вида не имеет отношения конкретно к внедрению вида...
зы: какие это сортировки не работают во внедренном виде?! О.о
Перестроение вида происходит только, если переключиться на другой вид и обратно, никак иначе он не перестраивается после внесения изменений...
По-моему не работали Click on column header to sort. Не помню точно. Но что-то точно не работало.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#9
Extraterrestrial
Про второй момент. Переоткрывать не надо, а надо сделать view.Rebuild. Если делать серверным агентом, то и этого не надо.
А про первый момент есть сомнения, что получится с Shared, private on first use.

Если данных немного, то делай через папки.
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#10
Extraterrestrial
Про второй момент. Переоткрывать не надо, а надо сделать view.Rebuild.
Да? Мне казалось что не помогают ни рифреши, ни рибилды. Попробую. Спасибо.

Если делать серверным агентом, то и этого не надо.
Что рифреша достаточно будет? Вот у меня вид открыт этот. Агент отработал. Разве что-то должно измениться в UI само собой?

А про первый момент есть сомнения, что получится с Shared, private on first use.
Почему?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#12
Да? Мне казалось что не помогают ни рифреши, ни рибилды. Попробую. Спасибо.
Мне помогали. :)

Что рифреша достаточно будет? Вот у меня вид открыт этот. Агент отработал. Разве что-то должно измениться в UI само собой?
Ничего не надо делать. Просто вызови агент и представление само собой обновится.

Ну ты сам посуди. К десктопным личным представлениям ты не достучишься, ибо локальные. Если вдруг достучишься к серверным, то как агент узнает какое ему именно брать, ведь их много с одинаковым именем? По одному на каждого пользователя.
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#13
Ну ты сам посуди. К десктопным личным представлениям ты не достучишься, ибо локальные.
Интересно есть ли права у пользователя на изменение дизайна десктопного вида даже если в ACL у него дизайнерских прав нет...

Если вдруг достучишься к серверным, то как агент узнает какое ему именно брать, ведь их много с одинаковым именем? По одному на каждого пользователя.
Где-то должно храниться имя пользователя, иначе и система не различит их, какое выдавать пользователю. Там, наверное, поле типа Readers для этого есть.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#14
Интересно есть ли права у пользователя на изменение дизайна десктопного вида даже если в ACL у него дизайнерских прав нет...
на локальной реплике без форсирования доступа, по-идее, не нужны права дизайнера, т.к. человек получает полный доступ к базе...
Где-то должно храниться имя пользователя, иначе и система не различит их, какое выдавать пользователю. Там, наверное, поле типа Readers для этого есть.
там есть поле-читатели, поэтому я и писал
не уверен, что серверный агент его увидит вообще...
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#15
там есть поле-читатели, поэтому я и писал
Надо будет проверить, что в этом поле. А про локальные реплики, мы с локальными репликами не работаем. С моей точки зрения локальный контент - это одна сплошная головная боль...
И я склоняюсь в пользу десктопных видов, так как в базе хранить слишком много видов может быть накладно. Вопрос только как пользователь сможет менять дизайн десктопного вида, есть ли у него права.
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#16
Вообще есть у кого-то опыт работы с десктопными видами, программное изменение их дизайна?

У меня выдает ошибку на свойстве notesUIView.View. Вид получить не могу.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#17
к таким размазанным вопросам нужно код прилагать, а то ошибка понятие растяжимое :blink:
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#18
к таким размазанным вопросам нужно код прилагать, а то ошибка понятие растяжимое :blink:
Dim uiw As New NotesUIWorkspace
Dim UIview As NotesUIView
Dim view As NotesView
Set UIview=uiw.CurrentView
Set view=UIview.View

Попробовал через getView, ошибка не возникает, но и ничего не меняется, вид прежний. Тот же скрипт работает на обычном виде прекрасно.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#19
а что ты сделать пытаешь в коде? апдейт?..
так я давал ссылку на пример :blink: короче гря, есть NotesUIWorkspace.ViewRebuild, она работает из вида нормально
 

Extraterrestrial

Well-known member
28.02.2008
266
0
#20
а что ты сделать пытаешь в коде? апдейт?..
так я давал ссылку на пример :blink: короче гря, есть NotesUIWorkspace.ViewRebuild, она работает из вида нормально
Я про ошибку пишу, что объект не создается (Set view=UIview.View). Причем тут NotesUIWorkspace.ViewRebuild? Я использую NotesUIWorkspace.ViewRebuild, спасибо, хорошо работает.
Как достучаться к десктопному виду в бэкэнде через LotusScript?