Programmgesteuert ändern-Feld, um in der Sharepoint-Liste 2007
Ich bin das hinzufügen in zwei neue Felder in eine bereits bestehende Sharepoint-Liste programmatisch über ein feature. Die Felder sind erfolgreich Hinzugefügt, aber ich war nicht in der Lage zum anpassen der Reihenfolge der Spalten.
Dieser Aufgabe erfolgt einfach über die Benutzeroberfläche gehen Sie zu der Liste Einstellungen und dann Spalte der Bestellung, aber ich war nicht in der Lage zu erreichen, die Aufgabe programmgesteuert.
Durch einige der Forschung, die ich gesehen habe, dass Sie verwenden können, die SPContentType des Formulars zum ändern der Reihenfolge der FieldLinks (wie folgt):
SPList list = web.Lists["Example List"];
if (list.ContentTypes.Count > 0) {
SPContentType ct = list.ContentTypes[0];
string[] names = {"Example_x0020_One", "Example_x0020_Two", "Example_x0020_Three"};
ct.FieldLinks.Reorder(names);
ct.Update();
}
In diesem Beispiel, ich würde die Liste schon "Ein Beispiel" und "Beispiel" Drei Spalten, und ich möchte hinzufügen "Beispiel Zwei" und später versuchen, diese zu bestellen.
Dieser Ansatz jedoch nicht für mich arbeiten, also wenn jemand eingegeben hat, das würde anerkannt werden.
Den nächsten Artikel, den ich sah, ist das manuelle ändern der SchemaXml der Liste, um die richtige Bestellung der Felder, aber ich wollte sehen, ob dies die beste Methode.
Jeder Eingang würde sehr geschätzt, ich danke Ihnen für Ihre Hilfe.
- Versuchen Sie eine "einfache" Feld-name (z.B. keine Raum - /Kodierung). Auch sicherzustellen, Sie werden immer wieder ein paar CTs, etc.
- Verifiziert, dass ich immer die CT zurück, aber für einige Grund der Nachbestellung Schritt funktioniert nicht. Ist mit dem ersten ContentType der Liste der Standard?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nahm ich einen Blick auf die Quelle der Spalte Bestell-Seite (formEdt.aspx), es sieht aus wie Sie die Webdienste verwenden, nicht das Objekt-Modell:
Nun, es könnte möglich sein, zu tun, die durch das Objekt-Modell, aber ich habe kein gutes Gefühl dabei, wenn das UI ist punting.
Hier ein powershell-version:
Benutzte ich den code aus deiner Antwort, außer, dass ich programmgesteuert geprüft die content-Typen und Felder für die Liste wollte ich wieder bestellen.
//Schritt 1 (optional): Liste der Inhaltstypen und Felder für die Liste, um zu sehen, was in der Liste
Nun, Sie haben eine Vorstellung davon, wie viele Inhalt, Arten Ihrer Liste hat und welche Felder sind in der Liste.
Standard, wenn der content-type-management nicht aktiviert ist, haben Sie ein content-Typ, der hat Sie alle Felder aus.
Beispielausgabe für den obigen code:
Content-Type: Ereignis, Felder:
"ContentType", "Titel", "Ort", "EventDate", "EndDate", "Beschreibung", "fAllDayEvent", "fRecurrence", "WorkspaceLink", "EventType", "UID", "RecurrenceID", "EventCanceled", "Dauer", "RecurrenceData", "TimeZone", "XMLTZone", "MasterSeriesItemID", "Workspace", "Natürlich", "CourseLocation"
Nächsten Schritt 2 ändern Sie die Reihenfolge der Inhalte geben. Sie können Ausschneiden und einfügen aus der Ausgabe von Schritt 1 erneut, um es, und fügen Sie "{" und "};" um es zu erstellen, die den string-array für die Bestellung, die Sie wollen.