2 Stimmen

Wie erstellen Sie eine Seite, die Teile einer Dokumentenbibliothek in SharePoint 2007 auswählt und dupliziert?

Ich versuche, eine MySite einzurichten, die es Einzelpersonen ermöglicht, mehrere Projekte zu erstellen und zu bearbeiten, von denen jedes eine teilweise Kopie einer Master-Dokumentenbibliothek enthält. Ich habe bereits die Bibliothek erstellt und die Dokumente hochgeladen, und ich habe auf einer Seite experimentiert, wie ich das tun kann.

Ich muss in der Lage sein, eine Liste der Dokumente in der Dokumentenbibliothek anzuzeigen, es dem Benutzer zu ermöglichen, auszuwählen, welche er haben möchte, und dann, wenn er auf eine Schaltfläche klickt, muss ich die Datenbank mit Informationen zu diesem Projekt initialisieren, Informationen zu jedem der Dateien und die Dokumente müssen an einen neuen Speicherort kopiert werden, damit der Benutzer sie aufrufen, bearbeiten und speichern kann, wobei die Änderungen spezifisch für das jeweilige Projekt sind. Außerdem muss es möglich sein, sie über eine ähnliche Benutzeroberfläche hinzuzufügen/zu entfernen, nachdem das Projekt bereits erstellt wurde, wenn möglich.

Leider sind sämtliche Ansätze mit Code eingeschränkt; daher kann nichts verwendet werden, was eine Installation im GAC erfordert, und selbst serverseitige Skripte innerhalb der ASPX-Datei können nicht verwendet werden. Es scheint, dass fast alles, was ich finde, wenn ich nach "Sharepoint 2007 clone Master Document Library" oder Ähnlichem suche, Code erfordert.

Ich habe mit SharePoint Designer herumgespielt, um das UI zu erstellen, und herausgefunden, wie ich eine Liste der Dokumente anzeigen kann, obwohl ich Schwierigkeiten habe, sie zu duplizieren. Es hat ein mit einem darin erstellt. Allerdings, wenn ich versucht habe, Dinge wie eine Data View CheckBoxList zur Dokumentenliste zu ziehen, hat es entweder nicht funktioniert (das gilt für das Formular als Ganzes, nicht nur für die Dokumentenliste), oder, wie erwartet, wurde es nicht wirklich an jede Zeile der Liste gebunden. Es ist für mich nicht ganz klar, was ich tun muss, um das zu erstellen.

Ich verstehe (mehr oder weniger), dass die Steuerelemente über das .xslt im Formular verbunden werden können, aber ich gehe davon aus, dass es einfacher sein muss, als sie von Hand zu schreiben, da der Designer so sehr dem Visual Studio Designer ähnelt. Ich habe große Schwierigkeiten herauszufinden, wie ich überhaupt eines der Steuerelemente zum Laufen bringen kann; die meisten von ihnen haben das gleiche Problem wie die CheckBoxList und lassen sich nicht einmal auf das Formular ziehen. Ich nehme an, dass es einen Paneltyp oder ähnliches gibt, den ich zuerst zum Formular hinzufügen muss, aber das ist so anders als das, was ich gewohnt bin, dass es mir schwerfällt, mich überhaupt zurechtzufinden.

Kann mir also jemand den richtigen Weg weisen? Ich werde in der Lage sein müssen, die Projekte zu erstellen, die Dokumente auszuwählen, sie mit anderen Informationen in ein neues Projekt zu kopieren, einschließlich der Erstellung von Einträgen in der Datenbank. Ich habe im Laufe vieler Jahre Software entwickelt, auf vielen verschiedenen Plattformen mit vielen verschiedenen Sprachen, obwohl es in letzter Zeit hauptsächlich WinForms war, mit einigen .aspx-Sachen (aber nichts zu ausgefallenes), und das war noch nie so schwer. Ich denke, es gibt einfach etwas, das ich nicht verstehe, über das Modell hier; wie sagt man dem Formular, dass man x/y/z-Steuerungen mit einem bestimmten Datenquellennetzwerk verknüpfen möchte? Wie sagt man SharePoint, dass es einen neuen Speicherort für die Dateien erstellen soll? Wie kann man die ausgewählten Dateien an SharePoint übermitteln und sagen, wohin sie kopiert werden sollen?

Jede Hilfe wäre sehr geschätzt, ich kämpfe seit Tagen damit. :)

1voto

Nat Punkte 14020

Sie haben möglicherweise eine Änderung mit SharePoint 2010 vorgenommen, da es ein JavaScript/jQuery-Programmiermodell gibt, aber ohne das haben Sie keine realistische Möglichkeit, zu kodieren, was Sie benötigen. Sie können Glück haben und in der Lage sein, die SharePoint-Webdienste mit jQuery aufzurufen, aber es wird viel Arbeit erfordern, um die Anforderung an "kein Code" zu umgehen.

0voto

shelleybutterfly Punkte 3168

Okay, nun ja, es ist mir endlich gelungen, dies weitgehend zum Laufen zu bringen, obwohl es immer noch einige Probleme mit der Anzeige der Daten gibt, sobald ich sie zurückbekomme; Ich werde versuchen, diese Frage zu aktualisieren, sobald ich eine bessere Antwort darauf habe.

Es gibt eine coole Bibliothek namens SPServices, die zusammen mit JQuery eine Schnittstelle zu den Webservices für SharePoint 2007 bereitstellt. Es scheint so ziemlich eine Schnittstelle zu allem zu bieten, was Sie tun müssen, um die Webservices zu verwenden, ohne viel zusätzliche Arbeit Ihrerseits.

Zum Beispiel, um eine Dokumentenbibliothek abzufragen, habe ich eine Funktion ähnlich wie diese in einer Hilfsklasse eingerichtet (basierend auf den Beispielen aus der SPServices-Dokumentation).

ServiceClass.prototype.getSpecialDocLib = function (onComplete) {
    var sc = this;

    $().SPServices({
        operation: "GetListItems",
        async: false,
        listName: "Spezielle Dokumentenbibliothek",
        CAMLViewFields: "",

        completefunc: function (xData, Status) {
            var outTable = new DocTable();

            $(xData.responseXML).find("[nodeName='z:row']").each(function () {
                var i;
                var outRow = new DocTableRow();

                for (i = 0; i < this.attributes.length; ++i) {
                    outRow.addField(this.attributes[i].localName, this.attributes[i].value);
                };

                outTable.addRow(outRow);
            });

            sc.onDocumentListComplete(xData, Status);

            if (onComplete != null)
                onComplete(resultTable);
        }
    });
};

Zum Kopieren einer Dokumentenbibliothek von einem Ort an einen anderen, glaube ich, können Sie Lists.AddList verwenden, um sie zu erstellen (nicht explizit in SPServices dokumentiert, basierend jedoch auf this Web Service call), entweder von Grund auf oder aus einer Vorlage, und ich glaube, Sie können die Methode SPServices Copy.CopyIntoItemsLocal verwenden.

Wie dem auch sei, ich scheine mit diesem bisher Fortschritte zu machen; Ich werde diese Antwort aktualisieren und akzeptieren, sobald ich etwas mehr Erfahrung und Zeit habe, um sicherzustellen, dass alles funktioniert, aber bisher scheine ich Fortschritte in Richtung des Ziels "kein Code" zu machen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X