25 Stimmen

SharePoint: Wie kann ich programmgesteuert Elemente zu einer benutzerdefinierten Listeninstanz hinzufügen?

Ich suche wirklich entweder ein kleines Code-Snippet oder ein gutes Tutorial zu diesem Thema.

Ich habe eine C#-Konsolen-App, die ich verwenden werde, um irgendwie Listenelemente zu meiner benutzerdefinierten Liste hinzuzufügen. Ich habe auch einen benutzerdefinierten Inhaltstyp erstellt. Also bin ich mir nicht sicher, ob ich auch eine C#-Klasse aus diesem Inhaltstyp erstellen muss. Vielleicht nicht.

Vielen Dank im Voraus

33voto

Flo Punkte 27047

Ich denke, diese beiden Blog-Beiträge sollten Ihnen helfen, Ihr Problem zu lösen.

http://blog.the-dargans.co.uk/2007/04/programmatically-adding-items-to.html http://asadewa.wordpress.com/2007/11/19/adding-a-custom-content-type-specific-item-on-a-sharepoint-list/

Kurze Übersicht:

  1. Holen Sie sich eine Instanz der Liste, zu der Sie das Element hinzufügen möchten.

  2. Fügen Sie der Liste ein neues Element hinzu:

    SPListItem newItem = list.AddItem();
  3. Um Ihr neues Element an einen Inhaltstyp zu binden, müssen Sie die Inhaltsyp-ID für das neue Element festlegen:

    newItem["ContentTypeId"] = ;
  4. Legen Sie die in Ihrem Inhaltstyp angegebenen Felder fest.

  5. Speichern Sie Ihre Änderungen:

    newItem.Update();

18voto

Kusek Punkte 5364

Um es einfach auszudrücken, müssen Sie den Schritt befolgen.

  1. Sie müssen die Microsoft.SharePoint.dll zur Anwendung referenzieren.

  2. Angenommen, der Listenname ist Test und er hat nur ein Feld "Titel", hier ist der Code.

            using (SPSite oSite=new SPSite("http://mysharepoint"))
        {
            using (SPWeb oWeb=oSite.RootWeb)
            {
                SPList oList = oWeb.Lists["Test"];
                SPListItem oSPListItem = oList.Items.Add();
                oSPListItem["Title"] = "Hallo SharePoint";
                oSPListItem.Update();
            }
    
        }
  3. Beachten Sie, dass Sie diese Anwendung auf demselben Server ausführen müssen, auf dem SharePoint installiert ist.

  4. Sie müssen keine benutzerdefinierte Klasse für benutzerdefinierten Inhaltstyp erstellen.

11voto

Andrew Punkte 9747

Sie können ein Element in Ihrer benutzerdefinierten SharePoint-Liste erstellen, indem Sie so etwas tun:

using (SPSite site = new SPSite("http://sharepoint"))
{
    using (SPWeb web = site.RootWeb)
    {
        SPList list = web.Lists["Meine Liste"];
        SPListItem listItem = list.AddItem();
        listItem["Title"] = "Der Titel";
        listItem["BenutzerdefinierteSpalte"] = "Ich bin benutzerdefiniert";
        listItem.Update();
     }
}

Bei Verwendung von list.AddItem() sollten die Elemente der Listen gespeichert werden, die aufgezählt werden.

5voto

vapcguy Punkte 6445

So sah es auf der Microsoft-Website aus, wobei ich nur das SPSite und SPWeb angepasst habe, da diese je nach Umgebung variieren können und es hilft, diese nicht fest codieren zu müssen:

using (SPSite oSiteCollection = new SPSite(SPContext.Current.Site.Url))
{
    using (SPWeb oWeb = oSiteCollection.OpenWeb(SPContext.Current.Web))
    {
        SPList oList = oWeb.Lists["Ankündigungen"];
        // Sie können auch
        // SPList oList = oWeb.GetList("/Listen/Ankündigungen");
        // verwenden, um das Abfragen aller Listen der Websites zu vermeiden
        SPListItem oListItem = oList.Items.Add();
        oListItem["Titel"] = "Mein Element";
        oListItem["Erstellt"] = new DateTime(2004, 1, 23);
        oListItem["Geändert"] = new DateTime(2005, 10, 1);
        oListItem["Autor"] = 3;
        oListItem["Editor"] = 3;
        oListItem.Update();
    }
}

Quelle: SPListItemClass (Microsoft.SharePoint). (2012). Abgerufen am 22. Februar 2012 von http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitem.aspx.

1voto

Mohsen Sichani Punkte 888

Ich hatte ein ähnliches Problem und konnte es lösen, indem ich den folgenden Ansatz befolgte (ähnlich wie andere Antworten, aber auch Anmeldeinformationen benötigt),

1- Fügen Sie Microsoft.SharePointOnline.CSOM über Tools-> NuGet-Paket-Manager-> NuGet-Pakete für Lösung verwalten-> Durchsuchen-> auswählen und installieren hinzu

2- Fügen Sie "using Microsoft.SharePoint.Client;" hinzu

dann der folgende Code

        string siteUrl = "https://yourcompany.sharepoint.com/sites/Yoursite";
        SecureString passWord = new SecureString();

        var password = "Ihr Passwort hier";
        var securePassword = new SecureString();
        foreach (char c in password)
        {
            securePassword.AppendChar(c);
        }
        ClientContext clientContext = new ClientContext(siteUrl);
        clientContext.Credentials = new SharePointOnlineCredentials("Benutzername@domain.nz", securePassword);/*passWord*/
        List oList = clientContext.Web.Lists.GetByTitle("Der Name Ihrer Liste hier");
        ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
        ListItem oListItem = oList.AddItem(itemCreateInfo);
        oListItem["PK"] = "1";
        oListItem["Precinct"] = "Mangere";
        oListItem["Title"] = "Innovation";
        oListItem["Project_x0020_Name"] = "Test von C#";
        oListItem["Project_x0020_ID"] = "ID_123_von C#";
        oListItem["Project_x0020_start_x0020_date"] = "2020-05-01 01:01:01";
        oListItem.Update();

        clientContext.ExecuteQuery();

Denken Sie daran, dass Ihre Felder möglicherweise anders sind als das, was Sie sehen, zum Beispiel in meiner Liste sehe ich "Projektname", während der tatsächliche Wert "Project_x0020_ID" ist. Wie man diese Werte (d.h. interne Feldwerte) erhält?

Ein paar Ansätze:

1- Verwenden Sie MS Flow und sehen Sie diese

2- https://mstechtalk.com/check-column-internal-name-sharepoint-list/ oder https://sharepoint.stackexchange.com/questions/787/finding-the-internal-name-and-display-name-for-a-list-column

3- Verwenden Sie einen C#-Reader und lesen Sie Ihre SharePoint-Liste

Der Rest der Operationen (Aktualisieren/Löschen): https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee539976(v%3Doffice.14)

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