Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mwue am 26.01.07 - 12:36:07
-
Hallo liebes Forum,
ich habe eine sortierte Ansicht "editierbar" gemacht:
Die Spalten haben die Eigenschaft "bearbeitbar".
Ins Inviewedit Event habe ich folgenden Code gestellt:
Sub Inviewedit(Source As Notesuiview, Requesttype As Integer, Colprogname As Variant, Columnvalue As Variant, Continue As Variant)
''code for modifying only the company column and not adding new documents from view.
Const QUERY_REQUEST = 1 ' used when the user enters the editable column
Const VALIDATE_REQUEST = 2 ' used when the user exits the editable column
Const SAVE_REQUEST = 3 ' saves after validation for an existing view entry
Const NEWENTRY_REQUEST = 4 ' after validation when the user makes a new entry in a view
Dim COLUMN_FEATURE As String
Dim FIELD_FEATURE As String
' Editable column
COLUMN_FEATURE = ColProgName(0) ' programmatic name of column--see advanced tab
FIELD_FEATURE = ColProgName(0) ' field name
'Msgbox COLUMN_FEATURE,, "Spaltenname"
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim view As NotesView
Set db = ws.CurrentDatabase.Database
If (Source.CaretNoteID = "0") Then Exit Sub
Set note = db.GetDocumentByID(Source.CaretNoteID) ' The Notes ID of the document currently highlighted (that is, at the caret location) in a view
If (note Is Nothing) Then Exit Sub
If (RequestType = QUERY_REQUEST) Then
If(note.HasItem(FIELD_FEATURE)) Then
Columnvalue(0) = note.GetItemValue(FIELD_FEATURE) 'Get the current (original) value to put in Edit box
Else
Continue = False 'This doc does not contain the required field; ignore it
End If
Elseif (RequestType = VALIDATE_REQUEST) Then
Continue = True 'Accept any user input
Elseif (RequestType = SAVE_REQUEST) Then
Call note.ReplaceItemValue (FIELD_FEATURE, ColumnValue(0)) 'assumes that value stored in ColumnValue(0) is the value that goes with that column.
Call note.Save(True, True, True)
Set doc = note
Call Source.SelectDocument(doc)
Elseif (RequestType = NEWENTRY_REQUEST) Then
REM Create document and create "Form" item
REM Write column values to the new document
Set doc = New NotesDocument(db)
Call doc.ReplaceItemValue("Form", "Lexikon")
Call doc.ReplaceItemValue("wortdeutsch", "")
Call doc.ReplaceItemValue("wortenglisch", "")
Call doc.ReplaceItemValue("wortfranz", "")
Call doc.ReplaceItemValue("wortschwedisch", "")
Call doc.ReplaceItemValue("wortspanisch", "")
Call doc.ReplaceItemValue("wortnorwegisch", "")
Call doc.Save( False, True )
Call doc.ReplaceItemValue(Colprogname(0), Columnvalue(0))
REM Save(force, createResponse, markRead)
Call doc.Save(True, True, True)
Set view = Source.View
Call view.Refresh()
Call Source.SelectDocument(doc)
End If
End Sub
Soweit funktioniert auch alles wunderbar. Nur habe ich ein Problem: Wenn ich den Wert in der ersten Spalte ändere, ist das Dokument erstmal "weg", d.h. es wird woanders einsortiert (die erste Spalte ist sortiert) und der Cursor bleibt aber an der alten Stelle stehen.
Nun habe ich versucht, Lotus Notes mit
Call Source.SelectDocument(doc)
dazu zu bringen, das geänderte Dokument (doc) wieder auszuwählen, aber leider funktioniert das nicht. ???
Habt Ihr eine Idee dazu ?
Viele Grüße
Marion
-
Hast Du autorefresh in der Ansicht aktiviert? bzw. mal probiert ob das View.refresh() benötigt wird?
Ansonsten musst Du die Ansicht umstellen....
-
Hallo Urs,
erst mal vielen Dank für Deine Antwort. :)
also Autorefresh ist drin (Ansichtseigenschaften --> 5. Reiter, Aktualisieren = Automatisch - das ist es doch oder ?). Das view.refresh() habe ich auch schon drin (4. Zeile von unten).
Umstellen möchte ich die Ansicht auch nicht, da es sich um ein Lexikon handelt und sonst nicht so leicht in der ersten Spalte gesucht werden kann. :-:
??
Grüßle
Marion
-
mach mal am Ende ein
NotesUIWorkSpace.ViewRefresh
dies sollte die Ansicht neu aufbauen
-
Hallo zusammen,
vielen Dank für Eure Tipps.
Ich habe meinen Fehler entdeckt. Ich hatte das view.refresh() zwar drin, aber an der falschen Stelle. Dann brauche ich ws.viewrefresh nicht mehr, was mich allerdings schon erstaunt.
Also hier gehört es hin:
Elseif (RequestType = SAVE_REQUEST) Then
Call note.ReplaceItemValue (FIELD_FEATURE, ColumnValue(0))
Call note.Save(True, True, True)
Set doc = note
Set view = Source.View
Call view.Refresh()
'Call ws.ViewRefresh
Call Source.SelectDocument(doc)
Ohne Eure Hilfe hätte ich sicher schon aufgegeben.
:)
Noch ein schönes Wochenende !
Marion