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.




Document Sets mittels Auswahlfenster kopieren

Unbeantwortet Dieser Beitrag hat 14 Antworten

Ohne Rang
84 Beiträge
Taylorcraft erstellt 10 März 2015 14:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Community,

 

ich arbeite an der Sache doch seit geraumer Zeit mit einigen Unterbrechungen ... nun habe ich wieder Zeit mich damit weiter zu beschäftigen ... um was geht es ???  >>>

 

In mehreren "Dokumenten Libraries" gibt es eine Anzahl (X) von "Document Sets" ... deren Inhalt ist einmal nicht so wichtig, da ALLES mitgenommen wird ... deren Bearbeitungen erlangen dann irgendwann deren Status "approved" und liegen eine Zeit lang ...

 

Ein eigens dafür "abgestellter" Dispatcher soll dann diese Document Sets MANUELL kopieren ... dieser überträgt somit aus einer Dokumentenbibliothek (X) nach (Y) ... es soll nichts gelöscht werden ...

 

Da es doch einige Bibliotheken gibt - diese haben aber grundsätzlich den selben Aufbau - kann man nur schwer von einem automatisierten Übertragen arbeiten ... DENN:  das Ziel sollte sein, dass ein "Auswahlfenster" mittels eines SOURCE und TARGET Teiles nun die Möglichkeit gibt, aus der QUELLE das richtige Document Set selektieren zu können ... und ... zumindest die ZIEL Bibliothek auch auszuwählen ... ein COPY Button sollte dann den Transfer starten ...

 

So weit so gut ...

 

Mir geht es hier einmal nur darum, WIE ich am besten alle Inhalte der SOURCE Bibliothek erfassen kann ... den code für das List Item auslesen habe ich bereits, dass war nicht so schwierig, nur stoße ich beim Zusammenfassen aller relevanten Informationen (Document Library / Folder / List items usw.) schon langsam an die Grenzen - oder verlaufe mich ...

 

Was beim (er)googeln so schwer ist, ist meine Anforderung vernünftig formuliert irgendwie vorzufinden ... mein vielleicht trivialer Ansatz besteht darin:

(a) erfassen aller infos einmal in einer Console Application um einmal zu prüfen, ob ich alle Testobjekte auch erfassen ... das gelingt zumindest ...

(b) wie bringe ich dann diese Infos in eine Form, die ich auch abrufen kann ??? In eine neue Liste ... temporär wo zwischenlagern ... und und ...

(c) muss ich ja dann ein Fenster "füttern" ... mit den QUELL Informationen und später  >>>

(d) mit den den der Endanwender dann auswählt ... also die ZIEL Documenten Library ...

 

So hoffentlich nicht allzu verwirrend und ich konnte mich halbwegs deutlich rüber bringen ...

 

Derzeit soll einmal mein Ziel sein  >>>  dass ich Punkt (b) erfüllen kann ... (a) ist einmal so geschafft - eine Bildschirmausgabe aller Objekte ...

 

Sollte ich hier den KOMPLETT FALSCHEN ANSATZ dafür haben - was kein Problem sein sollte - so bin ich für jeden Ratschlag offen ... gerne würde ich aber meinen Ansatz mit (a) und (b) fertig machen ;-)

 

Vielen Dank wie immer für eure Hilfe ... netten Tag & Grüße ...

 

Taylorcraft

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 März 2015 14:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was genau möchtest Du denn jetzt wissen?

Zum Auslesen der vorhandenen DocSets gibt es mehrere Möglichkeiten, die je nach Anforderungen und Anzahl mehr oder weniger geeignet sind. Man kann z.B. mit SPQuery und einer entsprechenden Abfrage die gesuchten Elemente finden. Oder über SPList.RootFolder.SubFolders alle auf einmal.

Und darstellen würde ich die dann in einer ASP.NET Listbox. Der User kann dann eine oder mehrere auswählen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
84 Beiträge
Taylorcraft Als Antwort am 10 März 2015 16:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

OKeeeeeeeeeee ....

Vielen Dank - schau mir das mal an und melde mich ...

 

LG

Ohne Rang
84 Beiträge
Taylorcraft Als Antwort am 11 März 2015 08:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Im Zuge meiner Recherche stoße ich teilweise auf SHAREPOINT 2013 ... SPList.RootFolder.Subfolders ... ich bin auf 2010 ... nur das wir hier nicht voreinander vorbei reden ...

 

Danke.

Normal 0 21 false false false DE-AT X-NONE X-NONE

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 11 März 2015 08:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das sind weitgehend Grundlagen von SharePoint, die sich seit einigen Versionen nicht geändert haben.

Im Zweifel kannst Du Dir immer die Klassen in der MSDN anschauen, wie hier z.B. SPLIst: https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.aspx. Oben gibt es eine Auswahl "Other Versions", mit der Du schauen kannst, wie sich die Klasse in 2010 oder 2007 verhielt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
84 Beiträge
Taylorcraft Als Antwort am 11 März 2015 11:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

OK alles klar Danke ... (mühe mich gerade ab) ...

 

Na mal sehen ... berichte auf jeden Fall ...

 

;-)

Ohne Rang
84 Beiträge
Taylorcraft Als Antwort am 11 März 2015 12:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also mit dem "Rootfolder" Thema drehe ich mich nur im Kreis ... ist ja recht schön wenn du mir den Lösungsweg so vorschlägst, anfangen kann ich damit nichts wirklich ...

 

Was bedeutet dies ???

Was soll damit erreicht werden ???

Warum die Lösung ???

Und, und, und ....

 

Denn egal wie ich es anpacke, ich bekomme nur den List Title aber nicht die 4 darunter liegenden Folder ... selbst die Beispiele - es sind einige im Netz vorhanden - sind teilweise unlogisch (weil nicht näher erklärt oder Code bezogen der Sinn nicht erkennbar - helfen hier gar nicht weiter ...

 

Danke & LG

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 11 März 2015 12:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich schreibe sehr oft nur ein paar Stichworte als Lösung. Ganz einfach weil mir meistens die Zeit für ausführliche Lösungen fehlt und weil sehr oft die richtigen Stichworte ausreichen um damit selbst eine Lösung zu finden.

Wo genau kommst Du denn nicht weiter? Ich erkläre dann gerne die Details.

Grundsätzlich ist es so, daß jede Datei in SharePoint einem SPFile entspricht. Jeder Ordner entspricht einem SPFolder und Document Sets sind ja auch nur besondere Ordner. Listenelemente hingegen sind weder Datei noch Ordner und werden durch SPListItem repräsentiert.

Und jetzt wird's kompliziert: sowohl Dateien als auch Ordner skönnen auch Metadaten haben und entsprechen damit ebenfalls Listenelementen. Im Objektmodell hat deshalb sowohl SPFile als auch SPFolder ein Property Item. Wenn es eine Datei oder ein Ordner in einer Bibliothek ist, dann verweist dieses Property auf das entsprechende SPListItem. Außerdem hat SPLIstItem sowohl ein File als auch ein Folder Property. Wenn das Listenelement einer Datei oder einem Ordner in einer Bibliothek entspricht, dann verweisen die Properties auf das entsprechende SPFile oder SPFolder.

Über die Listenelemente kommt man an die Metadaten. Z.B. liefert SPListItem["Title"] den Titel.

Du möchtest alle DocSets einer Bibliothek haben. Deshalb brauchst Du zuerst die Bibliothek als SPList und die bekommst Du aus dem zugehörigen SPWeb. Die aktuelle Website z.B. aus SPContext.Current.Web. Die Bibliothek entspricht ja selbst einem Ordner und den bekommst Du über SPList.RootFolder. Die DocSets sind quasi Ordner innerhalb dieses Ordners und werden dann über SPList.RootFolder.SubFolders erreicht.

Insgesamt kann das so aussehen:

SPWeb web = SPContext.Current.Web;
SPList list = web.List["Dokumente"];
foreach (SPFolder docSetFolder in list.RootFolder.SubFolders) {
// docSetFolder.Name liefert den Namen des Ordners/DocSets
SPListItem docSetItem = docSetFolder.Item;
// docSetItem liefert andere Metadaten
}

Sodele, ich hoffe das hilft jetzt weiter :-)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
84 Beiträge
Taylorcraft Als Antwort am 11 März 2015 14:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

PERFEKT DANKE !!!!!!

 

Habe es mittlerweile gefunden und gelöst ... ja für Anfänger ist das mühsam und schwer durchschaubar mit den Klassen und Members ... for allem dann auch die vielen Unterschiede, wo man sich direkt auf ein Objekt setzen kann bzw. dann nur noch mit "Collections" konfrontiert wird ... das verunsichert dann meistens ...bis man halt den Faden findet ... ist die Quintessenz der vergangenen 2 Monate bei den unzähligen Recherchen ...

 

ABER:  Danke für deinen Mühe der Zeilen ... gerade als Anfänger ist man froh, dass man immer etwas zum nachschlagen hat ... vor allem wo die "Unsicherheitsphase" einem bei neu hinzukommendem manche Dinge nochmals in Zweifel setzen ...

 

Wie gesagt Danke für deine Ausführung ... kopiere ich mir in mein persönliches Wiki  ;-)

 

So jetzt habe ich einmal alle Libs, Folder, DocSets als Bildschirmanzeige ... Testdaten sind auch upgedatet ... vorhanden und vollzählig aufgefunden ... somit erkenne und verstehe ich dass ich von der Logik her einmal am richtigen Weg bin ...

 

Nächster Schritt ist nun das Fensterchen wo die SOURCE und TARGET eingeblendet werden sollen ...

 

Melde mich in den nächsten Steps ...

 

Danke, netten Tag & Grüße ...

 

Taylorcraft

Ohne Rang
84 Beiträge
Taylorcraft Als Antwort am 12 März 2015 12:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich google und google ... ich finde keinen richtigen Ansatz ...ASP.NET Listbox ...

Es gibt´da sehr viel und beim lesen steigt die Verunsicherung ... wo beginne ich da einmal ???

 

Kann man die Listbox in einen WebPart einbinden ???

Braucht man einen WebPart ???

Kann man so eine Listbox einfach einblenden ???

Welches Event löst den Aufruf der Listbox aus ???

Wo bindet man das ein ??? reMT eines Kontextmenüs ???

 

Mir fehlt nach den vielen Recherchen einfach der Plan. Punkt ;-)

 

Ich brauche einfach den logischen - technischen Ansatz dazu.

 

LG

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 März 2015 12:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Sorry, aber hier sind wir doch sehr bei den Grundlagen von SharePoint und sogar bei den Grundlagen von ASP.NET. Das wird Dir keiner in einem Forum erklären können. Deshalb nur ein paar Worte dazu in der Hoffnung, daß Dich die Stichworte weiterbringen.

Wie und wo Du das in SharePoint einbindest hängt von den Anforderungen ab und die mußt Du selbst am besten kennen. Das kann ein Webpart sein, oder eine ganze Seite oder ein Befehl, der über das Kontextmenü oder das Ribbon aufgerufen wird, oder ein Dialog, der durch Kontextmenü oder Ribbon aufgerufen wird. Anleitungen zum Entwickeln von Webparts gibt es genug. Für eigene Einträge im Kontextmenü oder Ribbon, suche nach "CustomAction".

Eine Listbox entspricht einem <select> Element in HTML. Das kannst Du serverseitig erzeugen und dort z.B. deklarativ in einer aspx-Seite oder einem ascx-Control, aber auch per C#-Code. Man kann aber auch die ganze Oberfläche rein per JavaScript erzeugen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
84 Beiträge
Taylorcraft Als Antwort am 12 März 2015 12:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

OK ... Danke ... ok dann recherchiere ich damit weiter ...

 

LG

Ohne Rang
84 Beiträge
Taylorcraft Als Antwort am 12 März 2015 12:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So ... Meeting abgesagt ... hab etwas Zeit. Versuche das einmal näher, genauer zu beschreiben:

 

Ich habe ja ein Entwicklungssystem (Farm) wo ich das ganze unter bringe ... habe mir dazu in etwa die gleiche Umgebung geschaffen ... also Sites, Dokumentenbibliotheken, Folders usw. ... darin befinden sich diverse Document Sets mit uploaded Files ...

 

Was soll passieren ???

 

Diese sind von Lib (A) nach Lib (B) zu kopieren ... die Libs (A) und (B) sind namentlich gleich ... der Site Namen unterschiedlich ... auf Lib (A) soll sich nun ein Teil befinden, wo man einen Auslöser / Button setzt (oder vergleichbares was ich dzt. nicht weiss / abschätzen kann) ... denke kann man mittels edit page einfügen ... mit welchen nun eine "Listbox" mit den dargestellten Pfaden gestartet werden soll.

 

Sagen wir einmal ...

 

Lib (A) ist die SOURCE

Lib (B) ist die TARGET

 

Es  soll nun damit ein "auszuwählendes" approved DocSet aus Lib (A) nach Lib (B) kopieren ... wo ich hier nun Probleme habe, ist der Einstieg der fertigen Objektselektierung (derzeit als Bildschirmausgabe) in die entsprechende ASPX Listbox Umgebung ... das selbe Projekt (Visual Studio 2010) oder oder oder ...

 

Finde doch einiges im Netz, aber wie gesagt der Start der nä Schritte ist für mich derzeit nicht schlüssig ...und habe einfach nur Angst, hier unnötige zeit mit Experimenten zu verbringen ... als dann ...

 

Danke & LG

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 März 2015 13:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Naja, die Frage ist, ob Du überhaupt die Listbox brauchst. Man kann ja in einer ganz normalen Ansicht einer SharePoint-Bibliothek eines oder mehrere Elemente markieren und dann z.B. per Ribbon-Button eine Aktion auslösen. Man kann die Aktion auch ins Kontextmenü eines Elements packen. Oder man packt etwas auf die Doc Set Welcome Page. Das kann ein Button aber auch ein ganzes Webpart sein.

[quote user="Taylorcraft"]habe einfach nur Angst, hier unnötige zeit mit Experimenten zu verbringen [/quote]

Experimente sind nie unnötig - man lernt immer etwas dabei, auch wenn es vielleicht nicht die Lösung für die konkrete Fragestellung ist. Ich möchte Dir nicht zu nahe treten und tut mir leid, wenn ich das so hart sage, aber ich habe den Eindruck, Du mußt tatsächlich noch einiges lernen und dabei auch noch sehr viel selbst experimentieren. Wenn man immer nur die fertigen Lösungen anderer sieht, lernt man dabei nichts oder nicht viel.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
84 Beiträge
Taylorcraft Als Antwort am 12 März 2015 15:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nein du hast da schon recht ... ich komme eigentlich aus der SQL/Procedure Ecke ... das mit den Klassen, Members und den Collection und Nicht-Collection Thema im SP ist mir neu ...und teilweise auch verwirrend ... und nicht vergessen, ich lerne am Job ... von der Farm Einrichtung bis zur Entwicklung ... und das ganz alleine ;-)

 

Und Ja, einiges kann ich seit dem Sommer 2014 doch ... und es waren auch Erfolge dabei ... nur da alles immer wieder neu ist, fehlt mir hier oft der Aufhänger ...

 

Und Nein, du brauchst keine Angst haben, ich weiss schon wo und wie ich lerne ... und nichts gleicht dem was man selbst braucht ... auch nicht im Netz ...auch war es einmal an die Initialzündung gedacht und nicht das mir hier wer die Grundzüge oder Paketteile liefern muss ;-)

 

So habe einmal meine SELECT Struktur endlich fertig ins Reine bringen können ...schaut gut aus und alles ist vorhanden ...

 

Ja es gibt meist viele Lösungen ... aber Endanwender denken hier oft anders ... mit irgendwelchen Welcome-Pages ist es nicht möglich ... das ganze liegt in einer eigenen Projekt Struktur ... aber das eine oder andere pack ich schon ...

 

Das mit der ASPX Listbox denke ich ist auch die bessere Lösung ... dort soll sich dann der Dispatcher die geprüften und fertig abgearbeiteten DocSets selbst abholen (ist so angedacht) und kopiert sich diese dann in (s)eine "Approved Area" ...

 

Wie auch immer, bleibe am Ball und berichte hier weiter ...

 

Danke & LG