Autor Thema: NotesNavigator eine Kategorie durchgehen  (Gelesen 2100 mal)

TomLudwig

  • Gast
NotesNavigator eine Kategorie durchgehen
« am: 23.02.05 - 15:11:29 »
Hallo zusammen,

ich habe eine kategoriesierte Ansicht.
Nun möchte ich mit dem NotesNavigator alle Dokumente in der Ansicht einer bestimmten Kategorie durchgehen. Ist das überhaupt möglich?

Leider finde ich in der Hilfe zwar Methoden wie GetNextCategory usw. Aber nicht eine Methode die z.B. heißt GetCategory.

Kann mir jemand helfen? Danke, Gruß Tom

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #1 am: 23.02.05 - 15:15:24 »
Hi,

muss das unbedingt der NotesNavigator sein? Was mir spontan einfällt wäre GetAllDocumentsByKey aus der NotesView-Klasse. Dann hast du alle dokument in einer Collection.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

TomLudwig

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #2 am: 23.02.05 - 15:18:31 »
Sind die Dokumente dann in der gleichen sortierten Reihenfolge wie in der View?

Hintergrund:
Ich möchte im Web einen Next und Previous Button im Dokument einfügen um zum nächsten oder vorherigen Dokument springen zu können.

Da wärs schlecht, wenn die Collection nicht irgendwie sortiert ist...

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #3 am: 23.02.05 - 15:20:53 »
Hi,

ich glaube ja. Allerdings bin ich mir nicht ganz sicher.


Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

TomLudwig

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #4 am: 23.02.05 - 15:21:51 »
Ich probiers aus.

Vielen dank...

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #5 am: 23.02.05 - 15:24:38 »
Hi,

das Ergebnis würde mich interessieren.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Marinero Atlántico

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #6 am: 23.02.05 - 15:29:13 »
NotesDocumentCollection ist nicht sortiert.

Alternative:
Falls es in der Ansicht durch die du iterieren möchtest möglich ist, das Dokument per key (ggbfls mehrere Spalten) in der View zu finden, dann geht einfach view.getNextDocument (doc).

 

TomLudwig

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #7 am: 23.02.05 - 16:22:08 »
Ich hab es jetzt mit folgendem Code gemacht. Funktioniert eigentlich einwandfrei. Oder hat noch jemand was dran auszusetzten?

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase   
   Dim doc As NotesDocument
   Dim item As NotesItem
   Dim view As NotesView
   Dim col As NotesDocumentCollection
   Dim FirstDoc As NotesDocument
   Dim ThisDoc As NotesDocument
   Dim LastDoc As NotesDocument
   Dim TempDoc As NotesDocument
   
   Set db = session.CurrentDatabase
   Set doc = session.DocumentContext
   
   If doc.IsNewNote Then Exit Sub                        
   Set view = db.GetView("view")
   Set col = view.GetAllDocumentsByKey("MeineKategorie",True)
   Set FirstDoc = col.GetFirstDocument            
   Set LastDoc = col.GetLastDocument            
   Set ThisDoc = FirstDoc                  Do While doc.UniversalID <> ThisDoc.UniversalID   
      Set ThisDoc = col.GetNextDocument(ThisDoc)
   Loop
   
   Set item = doc.GetFirstItem("NsfName")
   
   If ThisDoc.UniversalID = FirstDoc.UniversalID Then
      Call doc.ReplaceItemValue( "PrevDocLink", "<span class=""grey"">None Found</span>")
   Else
      Set TempDoc = col.GetPrevDocument(ThisDoc)
      Call doc.ReplaceItemValue( "PrevDocLink", "<a href=""" + item.Text + "/0/" + TempDoc.UniversalID & "?OpenDocument"">Vorheriges Dokument</a>")      
   End If
   
   If ThisDoc.UniversalID = LastDoc.UniversalID Then
      Call doc.ReplaceItemValue( "NextDocLink", "<span class=""grey"">None Found</span>")
   Else
      Set TempDoc = col.GetNextDocument(ThisDoc)
      Call doc.ReplaceItemValue( "NextDocLink", "<a href=""" + item.Text + "/0/" + TempDoc.UniversalID & "?OpenDocument"">Nächstes Dokument</a>")      
   End If
End Sub

Marinero Atlántico

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #8 am: 23.02.05 - 16:30:34 »
ist es nicht effizienter, das mit einer Single Category View zu machen ?
v.a. für die runtime.
NotesCollections sind nicht sortiert.

TomLudwig

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #9 am: 23.02.05 - 16:48:06 »
Single Category View geht aus dem Grund nicht, da ich unzählig viele Views bräuchte.
So habe ich nur einen View in dem alle Kategorien drin sind.

Marinero Atlántico

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #10 am: 23.02.05 - 17:16:04 »
Ist das nicht der Trick einer Single Category View, dass da nur immer eine Kategorie angezeigt wird, obwohl mehrere da sind. Keine Energie jetzt ein Beispiel zu posten, aber ich empfehle garantiert ernsthaft, mal in die Suche der Designerhilfe "Einzelne Kategorie in eingebetteten Ansichten anzeigen" einzugeben.
Auf jeden Fall kann ich dir sicher sagen, dass NotesDocumentCollection nicht sortiert ist.

TomLudwig

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #11 am: 24.02.05 - 07:29:25 »
Aber wie soll ich denn aus dem WebQueryOpen auf die eingebettete Ansicht zugreifen können ?!?

Sorry, wenn das jetzt ne dämliche Frage war....

Marinero Atlántico

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #12 am: 24.02.05 - 10:25:36 »
Du musst das ganz anders machen. Mit treat content as html Ansichten geht es ziemlich sicher (99.9%). Mit der Kombination von Html, Formeln und JavaScript in Ansichten kann man echt eine Menge machen. 
Performance-Mässig ist auch WebQueryOpen nie eine gute Idee. V.a. skalliert das nicht bezogen auf gleichzeitig zugreifende User.
Ich bin echt unter zeitdruck, aber vielleicht kann ich am Wochenende eine Session einlegen und deine Requirements wie ich sie verstehe implementieren.
Wenn du über Script gehst, geht es so nicht.
Aber NotesDocumentCollection eben auch nicht, da unsortiert.
Eine Möglichkeit fürs erste wäre eine View zu basteln, wo in der ersten Spalte die Kategorie steht und in der 2. Spalte die DocUnique ID des Dokuments. Dann kannst du das gegenwärtig gewälte Dokument per vw.getDocumentByKey finden und das nächste und vorherige per getNextDocument oder getPreviousDokument. Da kannst du dann abfragen, ob das next- oder prev-Dokument den gleichen Wert im Feld Kategorie besitzt.

TomLudwig

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #13 am: 24.02.05 - 10:57:24 »
Das hab ich ja schon in meinem WebQueryOpen-Agenten gemacht.

Ich hab mir alle Dokumente einer Kategorie in einer collection geholt. Hab mir das Dokument mit der aktuellen UNID geholt und geschaut ob es ein nächstes bzw. vorheriges Dokument aus der zuerst geholten collection gibt.

Oder?!?

Marinero Atlántico

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #14 am: 24.02.05 - 11:05:24 »
Again. NotesDocumentCollections sind d.e.f.i.n.i.t.i.v. unsortiert.
Bzgl. Datenstrukturen kann man hier von einem unsortierten Set sprechen (keine Duplikate, unsortiert). Bitte um Korrektur von Jens, falls das jetzt falsch war.

Aber du wirst aus einer notesDocCollection.getNextDocument(foundDoc) nicht immer das nächste Dokument in der Ansicht finden, weil es eben unsortiert ist, dh die Sortierung richtet sich nach irgendwelchen internen Implementierungen, die wir eh nicht verstehen und auch nicht abwärtskompatibel sind.

TomLudwig

  • Gast
Re: NotesNavigator eine Kategorie durchgehen
« Antwort #15 am: 24.02.05 - 11:10:42 »
Gut, dann werd ich einfach mal warten. Vielleicht hast ja wirklich am WE Zeit mal so eine kleine Beispiel DB zu machen.

Ich würd mich auf jedenfall bedanken. Weil ich im Moment keinen Plan habe wie.

Wenn ich jedoch was hinbekomm meld mich mich noch mal.

Danke, danke, danke, Gruß Tom

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz