Insert into a SharePoint List using ASP.Net

This post describes how to insert into a SharePoint list using ASP.Net.  First add a reference to the SharePoint DLL for your specific version.  I’m working with SharePoint 2010, and the DLL can be found in the following location:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.dll

Ensure in your page that you import the namespace:

using Microsoft.SharePoint;

Now I’ve just dumped some example code below, which inserts into a Text field (obtained from a Textbox), a Multi choice field (obtained from a CheckList box) and a User field (obtained from a SharePoint PeopleEditor control).  I’ve also left a few comments in intentionally, as I tried different ways of doing things.  I found that if I ran this chunk of code with elevated privileges it inserted the entry into the list but didn’t trigger the associated workflow.  I also tried to run it as an impersonated user, but it still didn’t trigger the workflow.  So I commented out the RunWithElevated privileges line and it all worked well – the list item inserted and the associated workflow triggered.

You can also see that for the list name, I store this in the Web.Config file since I use the same list throughout the site.

try
{
    //we can use this to run in the context of a specific user, by passing in
    //superToken to SPSite

    // var user = SPContext.Current.Web.AllUsers[@"domain\user"];
    //var superToken = user.UserToken;

    //**IMPORTANT - Cannot run elevated otherwise Workflow wont run!!**

    // SPSecurity.RunWithElevatedPrivileges(delegate
    //{
    using (SPSite oSite = new SPSite(ConfigurationManager.AppSettings["ApplicationPortal"].ToString()))
    {
        using (SPWeb oweb = oSite.OpenWeb())
        {
            oSite.AllowUnsafeUpdates = true;
            oweb.AllowUnsafeUpdates = true;

            SPList supportLib = oweb.Lists[ConfigurationManager.AppSettings["UAMRequestList"].ToString()];
    
            SPListItem newItem = supportLib.Items.Add();

            //add a string to a Text field
            newItem["Title"] = "My Title";
                   
            //add to a multi choice field
            SPFieldMultiChoiceValue tp = new SPFieldMultiChoiceValue();
                    
	    //loop through each item in the checkbox list.  If checked, add it
            foreach (ListItem cBox in targetplatformCBL.Items)
            {
                if (cBox.Selected)
                {
                    tp.Add(cBox.Text);                          
                }
            }                  

            newItem["Target_x0020_Platform"] = tp;

	    //add to a User field
                  
            // SPUser user = oweb.EnsureUser("domain\\user");
            //string sRequester = user.ID.ToString() + ";#" + user.LoginName.ToString();
            // newItem["Requester"] = sRequester;

            PickerEntity entPropMgr = (PickerEntity)requesterPE.ResolvedEntities[0];
            SPFieldUserValue Proposalmgrvalue = new SPFieldUserValue(SPContext.Current.Web, Convert.ToInt16(entPropMgr.EntityData[PeopleEditorEntityDataKeys.UserId]), entPropMgr.Description);

            newItem["Requester"] = Proposalmgrvalue;
                    
            newItem.Update();

                  
        }
    }
          
}
catch (SPException ex)
{
    //handle exception   
}