Как программно установить сортировку столбца в представлении

  • Автор темы Darker
  • Дата начала
D

Darker

#1
В базе есть вьюхи для статистики, у которых первые столбцы были категоризированы и отсортированы. В целях оптимизации решил объединить все вьюхи, сделал каждый категоризированный столбец доминирующим при нажатии на его заголовок. В outline-е создал соответствующее ентри для сортировки и сокрытию "ненужных" столбцов. Как программно "сэмулировать" нажатие на заголовок столбца. Просто юзеры дотошные, не хотят лишний раз нажимать на заголовок. Заранее благодарю
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#2
Darker
смотря в какой версии ты пишешь, в 7-ке появились шаред столбцы, вынесешь один, поставишь на нем сортировку и всё ;)
можно DXML пройтись по всем видам и включить сортировку
програмно сэмулировать не знаю как :(
 
A

allex

#3
Код:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vc As NotesViewColumn
Set db = session.CurrentDatabase
Set view = db.GetView("View A")
Set vc = view.Columns(0)
If vc.IsResortToView Then
vc.IsResortToView = False
Else
REM Make sure other IsResort's are off
vc.IsResortAscending = False
vc.IsResortDescending = False
vc.IsResortToView = True
vc.ResortToViewName = "View B"
End If
If vc.IsResortToView Then viewname = vcResortToViewName
Messagebox "Resort ascending " & vc.IsResortAscending _
& Chr(13) & "Resort descending " & vc.IsResortDescending _
& Chr(13) & "Resort to view " & vc.IsResortToView _
& Chr(13) & viewname,, _
"User-sorted column options"
End Sub
 

Omh

Lotus team
04.07.2007
2 210
1
#4
Проперти для колонки, которые позволяют сделать её resortable существуют, как писал allex:
Код:
IsResortAscending
IsResortDescending
Но, мне кажется, программно эмулировать клик на хидер колонки не получится, т.е. применить per-user сортировку не выйдет.

Можно, конечно, на открытии view убирать сортировки со всех колонок, кроме нужной, но, во-первых, будет тяжко серверу, во-вторых, это не будет per-user settings, ибо view, как я понимаю шаредное.
Вообщем, лучше так не делать.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#6
Darker
А если несколько юзеров одновременно открывают?
я предложил варианты, которые действую сразу на всю базу, так как меняется дизайн, делать такое под индивидуальных юзеров считаю злом ;)

если же хочется всё же индивидуализировать, то думаю стоит покопаться на предмет того "как клиент запоминает настройки вида в локальном десктопе" - ведь если мы меняем вид, то при повторном входе в него он "помнит" как мы его меняли - правда это слетает при обновлении дизайна, но эта тема еще никем не раскрыта...
 
D

Darker

#7
ToxaRat
действительно, "как клиент запоминает настройки вида в локальном десктопе", никто не нашел где? Просто проблема до сих пор актуальна
 

azat20

Well-known member
22.07.2008
244
0
#9
насколько я знаю, параметры сортировки вида кэшируется локально