SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Listitems in Ordner verschieben ID beibehalten

Geprüfte Antwort Dieser Beitrag hat 15 Antworten

Ohne Rang
163 Beiträge
Markus Sallmutter erstellt 18 Jan. 2013 13:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Community

Ich habe wieder einmal ein kleines Problem und hoffe, dass mir jemand dabei weiterhelfen kann.

Ich möchte die Listitems in einer Liste in einen Ordner, den ich in der Liste erstellt habe verschieben.*
Ich habe dafür verschiedene Möglichkeiten ausprobiert, jedoch keine war in der Lage die ItemId zu behalten.

Wenn ich es über Inhalt und Struktur zum Beispiel verschiebe wird für jedes Item eine neue Id erstellt, was eine Katastrophe ist, da sehr viele User Links auf die aktuelle ItemID gespeichert haben um das Item leicht wiederfinden zu können.

Kennt vielleicht jemand einen Weg wie ich die Items in den Ordner bekomme, ohne das die ItemID verändert wird?

Bin für jede Hilfe dankbar!

PS: Ich habe ein nicht SharePoint Problem, bei dem mir sicher jemand helfen kann :)
Ich habe letztens eine Mail erhalten, das ein User dieser Seite mich als Freund hinzugefügt hat, jedoch weiß ich leider nicht wie ich diesem User nun eine Nachricht senden kann xD
Ich weiß das es sicher einfach geht, aber ich schaffe es leider nicht und verzweifle deswegen gerade ein wenig

Mfg
Markus

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Jan. 2013 14:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Zu Deinem eigentlichen Problem habe ich leider keine Lösung, d.h. ich kenne keinen Weg, wie das gehen könnte.

Auf Dein anderes Anliegen habe ich aber zumindest eine Antwort: man kann über diese Plattform keine "Private Messages" versenden und man kommt nicht an die Mailadresse eines Benutzers. Du kannst aber auf die der Profilseite eines Benutzers einen "Kommentar" schreiben. Der wird dann auch nur veröffentlicht, wenn derjenige das möchte.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
163 Beiträge
Markus Sallmutter Als Antwort am 18 Jan. 2013 14:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für die schnelle Antwort Andi!

Ja ich habe mir schon gedacht, dass es keine PM geben wird, da ich sie nirgens finden konnte.
Ich werde das mit dem Kommentar mal testen danke für den Tipp :)

Ohne Rang
163 Beiträge
Markus Sallmutter Als Antwort am 18 Jan. 2013 14:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Es würde mir auch weiterhelfen, wenn ich ein Permissionlevel erstellen könnte, bei dem User zwar ein Listitem hinzufügen dürfen, jedoch keine Listitems anzeigen dürfen.

Allerdings glaube ich das es auch hierfür keine Möglichkeit gibt, denn wenn ich beim erstellen eines Permissionlevels das Häckchen bei Add Items setze, wird automatisch eines bei View Items gesetzt...

Wenn trotzdem jemand einen Weg kennt das zu bewerkstelligen wäre ich ihm sehr dankbar.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Jan. 2013 15:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Über einen Permission Level kann man das nicht abbilden. Wenn ein Benutzer Elemente hinzufügen darf, braucht er auch das Recht Elemente anzuzeigen.

Unabhängig davon, daß ich den Sinn nicht verstehe, könnte man das aber über einen zu programmierenden EventReceiver lösen. Damit kann man das ItemAdded-Ereignis behandeln und dem neu erstellten Element sofort eigene Berechtigungen verpassen. U.a. kann man dann dem Ersteller die Rechte auf das eben erstellte Element nehmen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
163 Beiträge
Markus Sallmutter Als Antwort am 18 Jan. 2013 15:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Jap das habe ich mir schon gedacht^^

 

Diese Möglichkeit habe ich mir auch schon überlegt, allerdings würde ich es direkt in der Formularlogik nach dem Speichern einbaun.
Was mir daran nicht gefällt ist, dass der Code dann für jedes Item ausgeführt werden muss, deshalb wäre es mir mit einem Permissionlevel lieber gewesen bzw. am Liebsten wenn ich einfach die Items die jetzt in der Liste sind in den Ordner verschieben könnte ohne die id zu verlieren.

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 18 Jan. 2013 16:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Beim Verschieben eines ListItems über ListItem.File.MoveTo verlierst du nicht die ID diese bleibt erhalten solange du in der selben Liste bleibst.

Ich selber nutze diese Funktionalität um Elemente in Ordner zu verschieben auf die dann Berechtigungen sind und das tolle ist ich kann die Ansicht flach darstellen ohne Ordner. Statt vielen Einzelberechtigungen habe ich nur wenige Einzelberechtigungen (Ordner).

ItemReceiver ItemAdded so wie Andi geschrieben hat und einfach das ListItem verschieben.

Ohne Rang
163 Beiträge
Markus Sallmutter Als Antwort am 18 Jan. 2013 16:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für die Antwort Thomas!

Das klingt nach einer guten Möglichkeit meine Wünsche umzusetzen.

Ich verwende die Ordner wie du auch als Berechtigungsklammer. Das Problem war nur das in der Liste bereits ca 5000 Items sind und wir jetzt auf die Ordner umstellen müssen, da mehrere Benutzergruppen die Liste verwenden sollen, diese aber nicht die Items der jeweils anderen Gruppe sehen darf.

Den Receiver benötige ich in diesem Fall nicht, da ich das Verschieben bereits im Formular geregelt habe. Muss nur den Code auf die MoveTo Funktion umbauen.
Ich werde das am Montag testen und ein Feedback geben ob es so funktioniert hat wie ich es brauche.

Wenn nicht wäre ich froh wenn du mir helfen könntest wo mein Fehler liegt.

Mfg
Markus

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 Jan. 2013 17:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Thomas

[quote user="Thomas Östreich"]ListItem.File.MoveTo [/quote]

Geht das auch bei "normalen" Listenelementen? Ich dachte immer bei denen sei die File-Property null.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 18 Jan. 2013 17:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja das geht mit normalen Listenelement da SharePoint ursprünglich nur mit Dateien umgehen konnte. Jedes ListItem ist ein File Ausnahme Ordner Inhaltstypen.

Und da ist einer der größten Vorteile von Ordner im SharePoint um Berechtigungen zu Gruppieren für viele Elemente > 50.000 (Vererbung nach unten)

Ohne Rang
163 Beiträge
Markus Sallmutter Als Antwort am 21 Jan. 2013 08:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Thomas!

Also ich habe deinen Tipp ausprobiert und muss leider sagen, dass es so ist wie Andi gesagt hat. Bei meinem Listitem ist die .File Property null und daher kommt beim MoveTo ein Fehler. Mache ich etwas falsch? Hier mein Code:

SPListItem item = list.GetItemById(171);
item.File.MoveTo("<listurl>/folderName");

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 21 Jan. 2013 08:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Weil mich das jetzt doch interessiert hat, habe ich es ausprobiert. Bei meinen Versuchen war bei jeder Liste, die ich getestet habe, die File-Property null.

@Thomas: kannst Du beschreiben, wo das bei Dir ggf. funktioniert?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 21 Jan. 2013 09:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Man muss sich das SPFile über Web.GetFile besorgen. File im SPListItem bezieht sich nur auf das SPFile in Dokumentenbibliotheken (mein Fehler)

                SPFile file = Web.GetFile(item.UniqueId);
                file.MoveTo(newFileUrl);
Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 21 Jan. 2013 12:29
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke Thomas. Das funktioniert tatsächlich.

Und wieder was gelernt :-)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 21 Jan. 2013 12:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist doch schön das ich dir auch mal etwas beibringen konnte ;-)

Ohne Rang
163 Beiträge
Markus Sallmutter Als Antwort am 21 Jan. 2013 12:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für die Antwort Thomas

Du hast recht so funktioniert das ohne Probleme.

Vielen Dank für die Hilfe das ist genau das was ich brauche!