Page 1 sur 1

Manipulation de structure de vue a la volé

MessagePublié: 16 Sep 2010 à 15:07
par LSong
Bonjour

je cherche a crée dynamiquement une colonne dans une vue (en fait les folder dans crée par les utilisateur dans les boite au lettre )

la creation en soit ne pause pas de probleme sauf qu'il s'agit d'une colonne affichant une icone

La propriété isIcone etant en read-only, du coup je ne peu pas crée la colonne.

J'ai bien esseyer de copier une colonne avec ce flag mais la propriété itemName correspondant à la valeur du "programmatic Name" est elle aussi read-only


Quelqu'un aurait une idée pour crée une colonne avec une icone ?

MessagePublié: 16 Sep 2010 à 20:26
par Smicky
dxl peut etre...mais "on the fly" ca va etre chaud...

MessagePublié: 17 Sep 2010 à 07:08
par LSong
j'ai pensé aussi aux DXL mais j'esperais ne aps en arriver la ...

MessagePublié: 17 Sep 2010 à 10:03
par LSong
comment copier une colone ??? la fonction copycolumn copie aussi le nom technique du coup ca ne peu pas fonctionné !

je ne comprend aps comme ils ont put faire une fonctionnalité qui ne peu pas marcher, il y a surement un moyen de contourner le probleme

MessagePublié: 17 Sep 2010 à 10:34
par mclement
en API?

MessagePublié: 17 Sep 2010 à 15:56
par LSong
J'ai fini par trouver une solution non trivial

le but étant de reporter une modification faite dans l'inbox (ajout d'une colonne avec une image sur condition)

je fait donc une copie de l'inbox
que je renome puis je deplace les documents dans le folder

Code : Tout sélectionner
Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim inbox As NotesView
   Dim col As NotesViewColumn
   Dim found As Boolean
   Dim inboxForder As NotesDocument
   Dim userForder As NotesDocument
   Dim newFolder As NotesView
   Dim item As NotesItem
   
   Set db = s.CurrentDatabase
   Set inbox = db.GetView ("($inbox)")
   
   Set inboxForder = db.GetDocumentByUNID(inbox.UniversalID)
   
   Forall elem In db.Views
      Set view = elem
      ' verifier si elle est dans le scop
      If view.ViewInheritedName = "($Inbox)" And view.IsFolder = True Then
         ' s'il y a une colonne iC pas la peine
         found = False
         Forall elemC In view.Columns
            Set col = elemC
            If col.Formula = {@If(IENDescription="";0;"smalle_IC.jpg")} Then
               found = True
               Exit Forall
            End If
         End Forall
         
         If found = False Then
            
            
            Set userForder = inboxForder.CopyToDatabase (db)
            Call userForder.ReplaceItemValue ("$Comment", "")
            Set item = userForder.GetFirstItem ("$title")
            item.Values = view.Name
            
            Call userForder.Save (True, False)
            view.Name = view.Name & "_old"
            
            Set newFolder = db.GetView (item.Values(0))
            newFolder.IsProhibitDesignRefresh = True
            ' deplacer le contenu des folder
            Call newFolder.AllEntries.RemoveAllFromFolder(newFolder.Name)
            Call view.AllEntries.PutAllInFolder (newFolder.Name)
            
            ' effacer l'ancien folder
            Call view.Remove ()
         End If
      End If
      
   End Forall
   inbox.IsDefaultView = True