SharePoint : How can I programmatically add items to a custom list instance

后端 未结 5 1334
独厮守ぢ
独厮守ぢ 2021-02-01 17:22

I am really looking for either a small code snippet, or a good tutorial on the subject.

I have a C# console app that I will use to somehow add list items to my custom l

相关标签:
5条回答
  • 2021-02-01 18:00

    You can create an item in your custom SharePoint list doing something like this:

    using (SPSite site = new SPSite("http://sharepoint"))
    {
        using (SPWeb web = site.RootWeb)
        {
            SPList list = web.Lists["My List"];
            SPListItem listItem = list.AddItem();
            listItem["Title"] = "The Title";
            listItem["CustomColumn"] = "I am custom";
            listItem.Update();
         }
    }
    

    Using list.AddItem() should save the lists items being enumerated.

    0 讨论(0)
  • 2021-02-01 18:05

    I think these both blog post should help you solving your problem.

    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/

    Short walk through:

    1. Get a instance of the list you want to add the item to.
    2. Add a new item to the list:

      SPListItem newItem = list.AddItem();
      
    3. To bind you new item to a content type you have to set the content type id for the new item:

      newItem["ContentTypeId"] = <Id of the content type>;
      
    4. Set the fields specified within your content type.

    5. Commit your changes:

      newItem.Update();
      
    0 讨论(0)
  • 2021-02-01 18:05

    To put it simple you will need to follow the step.

    1. You need to reference the Microsoft.SharePoint.dll to the application.
    2. Assuming the List Name is Test and it has only one Field "Title" here is the 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"] = "Hello SharePoint";
                  oSPListItem.Update();
              }
      
          }
      
    3. Note that you need to run this application in the Same server where the SharePoint is installed.

    4. You dont need to create a Custom Class for Custom Content Type

    0 讨论(0)
  • 2021-02-01 18:14

    This is how it was on the Microsoft site, with me just tweaking the SPSite and SPWeb since these might vary from environment to environment and it helps not to have to hard-code these:

    using (SPSite oSiteCollection = new SPSite(SPContext.Current.Site.Url))
    {
        using (SPWeb oWeb = oSiteCollection.OpenWeb(SPContext.Current.Web))
        {
            SPList oList = oWeb.Lists["Announcements"];
            // You may also use 
            // SPList oList = oWeb.GetList("/Lists/Announcements");
            // to avoid querying all of the sites' lists
            SPListItem oListItem = oList.Items.Add();
            oListItem["Title"] = "My Item";
            oListItem["Created"] = new DateTime(2004, 1, 23);
            oListItem["Modified"] = new DateTime(2005, 10, 1);
            oListItem["Author"] = 3;
            oListItem["Editor"] = 3;
            oListItem.Update();
        }
    }
    

    Source: SPListItemClass (Microsoft.SharePoint). (2012). Retrieved February 22, 2012, from http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitem.aspx.

    0 讨论(0)
  • 2021-02-01 18:20

    I had a similar problem and was able to solve it by following the below approach (similar to other answers but needed credentials too),

    1- add Microsoft.SharePointOnline.CSOM by tools->NuGet Package Manager->Manage NuGet Packages for solution->Browse-> select and install

    2- Add "using Microsoft.SharePoint.Client; "

    then the below code

            string siteUrl = "https://yourcompany.sharepoint.com/sites/Yoursite";
            SecureString passWord = new SecureString();
    
            var password = "Your password here";
            var securePassword = new SecureString();
            foreach (char c in password)
            {
                securePassword.AppendChar(c);
            }
            ClientContext clientContext = new ClientContext(siteUrl);
            clientContext.Credentials = new SharePointOnlineCredentials("Username@domain.nz", securePassword);/*passWord*/
            List oList = clientContext.Web.Lists.GetByTitle("The name of your list here");
            ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
            ListItem oListItem = oList.AddItem(itemCreateInfo);
            oListItem["PK"] = "1";
            oListItem["Precinct"] = "Mangere";
            oListItem["Title"] = "Innovation";
            oListItem["Project_x0020_Name"] = "test from C#";
            oListItem["Project_x0020_ID"] = "ID_123_from C#";
            oListItem["Project_x0020_start_x0020_date"] = "2020-05-01 01:01:01";
            oListItem.Update();
    
            clientContext.ExecuteQuery();
    

    Remember that your fields may be different with what you see, for example in my list I see "Project Name", while the actual value is "Project_x0020_ID". How to get these values (i.e. internal filed values)?

    A few approaches:

    1- Use MS flow and see them

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

    3- Use a C# reader and read your sharepoint list

    The rest of operations (update/delete): https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee539976(v%3Doffice.14)

    0 讨论(0)
提交回复
热议问题