Удаление из вида

Тема в разделе "Lotus - Программирование", создана пользователем I123321, 3 июл 2009.

  1. I123321

    I123321 Гость

    Есть вопрос. Возможно ли удаление из вида, если документы в виде разбиты по категориям, необходимо удалять документы не выделяя их, а сразу всю категорию (то есть свернутую)
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    отлавливай событие Postdocumentdelete у базы
     
  3. I123321

    I123321 Гость

    а нельзя ли чуть подробней?!
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Если категория не вложенная, то можно с помощью свойства NotesUIView.CaretCategory узнать категорию, потом NotesView.GetAllDocumentsByKey получить коллекцию и удалить её.
     
  5. I123321

    I123321 Гость

    спасибо, буду прбывать

    сделано так:
    Код (Text):
       
    Dim view As NotesUIView
    Dim category As Variant
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Set db = session.CurrentDatabase
    Set view = workspace.CurrentView
    category = view.CaretCategory
    Set view = db.GetView( "category" )
    Set dc = view.GetAllDocumentsByKey("view ", False)
    Delete dc
    что делаю не правильно??? помогите пожалуйста
     
  6. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    category = view.CaretCategory
    Set dc = view.GetAllDocumentsByKey(category , False)
     
  7. I123321

    I123321 Гость

    так проверял. на Set dc = view.GetAllDocumentsByKey(category , False) выдает Not a member GetAllDocumentsByKey
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    можно так
    Код (Text):
    Set view = workspace.CurrentView    ' uiview
    category = view.CaretCategory  
    Set dc = view.view.GetAllDocumentsByKey(category, False) ' получить view от uiview
     
  9. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    да почти все. начнем с того, что код не компилируеца с включенным "option declare"

    view.GetAllDocumentsByKey("view ", False) - нет такого метода в uiview

    Копайте в направлении
    Dim ws As New NotesUIWorkspace
    Dim uiview As NotesUIView
    Set uiview = ws.CurrentView
    Dim category$
    category$ = uiview.CaretCategory

    Если категоризованный столбец в виде один и первый сортированный - то
    Dim collection As NotesDocumentCollection
    Set collection = uiview.View.GetAllDocumentsByKey( category$ , True )
    Call collection.RemoveAll( True )

    При удалении коллекции не должно быть открытых в UI документов из этой коллекции.( в т.ч. в превью )
    З.Ы. Рекомендую включить в настройках дизайнера опцию в Programmers Pane Properties: "Automatically add "option Declare"". Убережетесь от многих проблем.
     
  10. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Только тогда эту переменную
    Код (Text):
    Set view = workspace.CurrentView
    лучше назвать uiview.
    А то стрёмно получается:
    Код (Text):
    dc = view.view.GetAllDocumentsByKey
     
  11. I123321

    I123321 Гость

    сделал так , по вашим комментариям
    Код (Text):
        Dim workspace As New NotesUIWorkspace
    Dim view As NotesUIView
    Dim category As Variant
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Set db = session.CurrentDatabase
    Set view = workspace.CurrentView
    category = view.CaretCategory
    Messagebox "Категория '" + category + "' будет удалена"
    category = view.CaretCategory
    Set view = workspace.CurrentView
    category = view.CaretCategory
    Set dc = view.view.GetAllDocumentsByKey(category, False)
    Delete dc
    но ничего не удаляется
     
  12. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Omh
    я согласна :)
    сорри, но я наспех ответила, мне лень было код переписывать (даже сперва для dc Set пропустила - пришлось подправить)
    конечно, еще стоило нормально описать переменные, как предложил turumbay
    I123321
    ой-ой-ой... А зачем 3 раза категорию получать?
    Delete dc - удаляет объект коллекции из памяти. посмотри вариант turumbay - RemoveAll !!!
     
  13. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Орлята учатся летать :)
     
  14. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    мне вот было совсем лень...
    Код (Text):
        Dim WS As New NotesUIWorkspace 
    Dim uiview As NotesUIView
    Dim view As NotesView
    Dim category As Variant
    Dim dc As NotesDocumentCollection

    Set uiview = WS.CurrentView
    Set view = uiview.View
    category = uiview.CaretCategory

    Set dc = view.GetAllDocumentsByKey( category, True)

    Call dc.RemoveAll( True )

    Call ws.ViewRefresh
    все. теперь точно все
     
  15. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну и естественно, это будет работать, только если в виде одна категолрия :)
     
  16. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Да. Этот код для одноуровневой категории. А разве разговор о многоуровневой?
     
  17. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну просто потом I123321 сделает ещё одну категорию и опять появятся вопросы :)
    Так сказать "предупреждён - вооружён"
     
  18. I123321

    I123321 Гость

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    А что, уже понадобилось?

    Как вариант:
    1. ты знаешь формулу view
    2. ты знаешь название удаляемой категории
    3. ты знаешь поле в котором лежит категория

    На PostDocumentDelete науськиваешь на базу, например, db.Serach скомпонованный из тех вещей, которые ты знаешь.
    На выхлопе получаешь коллекцию, к которой применяешь метод RemoveAll(True) :)
     
  20. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
Загрузка...

Поделиться этой страницей