using System;
using IO = System.IO;
using System.Linq;
using System.Runtime.Remoting;
using System.Text;
using System.Threading;
using Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client;
string siteUrl = "http://servername:12345/";
SP.ClientContext ctx = new SP.ClientContext(siteUrl);
SP.List list = ctx.Web.Lists.GetByTitle("ListTitle");
SP.ListItemCreationInformation listItemCreationInfo = new SP.ListItemCreationInformation();
SP.ListItem oListItem = list.AddItem(listItemCreationInfo);
foreach (string key in FieldValuesAsTexts.Keys)
{
if (ValidateKey(key))
{
string strKey = fieldEntities.FirstOrDefault(t => t.FieldName == key).FieldInternalName;
if (FieldValuesAsTexts[key] != String.Empty)
{
string strVal = FieldValuesAsTexts[key];
//You can not have a Yes/No value for a field/column whose type is bit. Hence replacing it with 1/0
strVal = (strVal.ToLower().Trim() == "yes") ? "1" : (strVal.ToLower().Trim() == "no") ? "0" : strVal;
oListItem[strKey] = strVal;
}
}
}
//This will create ListItem before adding attachments
oListItem.Update();
//Let's say we have a custom class called AttachmentEntity and AttachmentsCollection is the //collection of the class Attachments.
if (listItemEntity.Attachments != null)
{
foreach (AttachmentEntity attachEntity in AttachmentsCollection)
{
string strFilePath = GetAbsoluteFilePath(strDirectoryPath, attachEntity.FileName);
strFilePath = String.Concat(strFilePath, "\\", attachEntity.FileName);
byte[] bytes = IO.File.ReadAllBytes(strFilePath);
IO.MemoryStream mStream = new IO.MemoryStream(bytes);
SP.AttachmentCreationInformation aci = new SP.AttachmentCreationInformation();
aci.ContentStream = mStream;
aci.FileName = attachEntity.FileName;
SP.Attachment attachment = oListItem.AttachmentFiles.Add(aci);
oListItem.Update();
}
}
ctx.ExecuteQuery();
Tag: SharePoint 2013
Upload a File to SharePoint using Client Object Model
Following is the complete process of uploading/creating a file on the SharePoint server using the Client Object Model. The following process should also be implied for some of the ListItems. Traditionally, we use ListItemCreationInformation class to create a ListItem. However, if your List is a
- Web Page Library
- Picture Library
then also you have to use the below process to create their ListItem otherwise, you’ll get the Microsoft.SharePoint.Client.ServerException, use the SPFileCollection.Add() to create file. This is one of such example where I am creating a ListItem for the Web Page Library List
using System; using System.Collections.Generic; using IO = System.IO; using System.Linq; using Microsoft.SharePoint.Client; using SP = Microsoft.SharePoint.Client;
string siteUrl = "http://siteUrl";
SP.ClientContext ctx = new SP.ClientContext(siteUrl);
SP.List list = ctx.Web.Lists.GetByTitle("ListTitle");
byte[] bytes = IO.File.ReadAllBytes(strFilePath); //strFilePath is the full path of the file that needs to be uploaded IO.MemoryStream mStream = new IO.MemoryStream(bytes); SP.FileCreationInformation fileInfo = new SP.FileCreationInformation(); fileInfo.ContentStream = mStream; fileInfo.Overwrite = true; fileInfo.Url = "https://siteUrl/Subsite1/Subsite2/SitePages/TestPage.aspx"; SP.File file = list.RootFolder.Files.Add(fileInfo); list.Update(); SP.ListItem listItem = file.ListItemAllFields; //If you have the MetaInfo that you want to restore listItem["MetaInfo"] = ltItemEntity.FieldValuesAsTexts["MetaInfo"]; listItem.Update(); ctx.ExecuteQuery();
To update large files, up to 2GB, check out my other blog at, https://realmpksharepoint.wordpress.com/2014/04/29/upload-large-files-to-the-sharepoint-documentlibrary-using-rpc-from-a-desktop-application-c/.
Also, you can visit the following post to upload files up to 10GB to SharePoint Online,
https://realmpksharepoint.wordpress.com/2016/07/22/upload-large-files-to-sharepoint-online/.
Upload Forms, VIews to SharePoint using Client Object Model
byte[] bytes = IO.File.ReadAllBytes(strFilePath); IO.MemoryStream mStream = new IO.MemoryStream(bytes); SP.File.SaveBinaryDirect(this.ctx, strServerRelativeUrl, mStream, true);
Remember, SaveBinaryDirect is use to upload Forms, & Views. You can’t upload a ListItem like, Document Library by this process. For other file types, plz check my other blog (will be posting shortly)
Create, Retrieve, and Delete the View of a SharePoint List using Client Object Model
string siteUrl = "http://servername:12345/";
ClientContext ctx = new ClientContext(siteUrl);
List oList = ctx.Web.Lists.GetByTitle("ListTitle");
Retrieve Views
SP.ViewCollection viewCollection = oList.Views; ctx.Load(viewCollection); ctx.ExecuteQuery();
Delete all the Views
foreach (SP.View vw in viewCollection)
{
Microsoft.SharePoint.Client.View view = oList.Views.GetByTitle(vw.Title);
ctx.Load(view);
view.DeleteObject(); // Delete Existing views
ctx.ExecuteQuery();
}
Create a new View
SP.ViewCreationInformation viewCreationInformation = new SP.ViewCreationInformation();
viewCreationInformation.Title = "New View";
viewCreationInformation.ViewTypeKind = SP.ViewType.None;
viewCreationInformation.RowLimit = 30;//Make sure that the name of the fields should be equal to 1 any of the associated SiteColumns Internal Name. The Fields in the view will appear in the same order as declared here.
viewCreationInformation.ViewFields = new string[]{"Title","Created","Modified"};
viewCreationInformation.SetAsDefaultView = true;
oList.Views.Add(viewCreationInformation);
ctx.Load(oList.Views);
ctx.ExecuteQuery();
Create, Update, Delete a SharePoint List and add a new Field using Client Object Model
Create and update a SharePoint list
// Starting with ClientContext, the constructor requires a URL to the
// server running SharePoint.
ClientContext context = new ClientContext("http://SiteUrl");
// The SharePoint web at the URL.
Web web = context.Web;
ListCreationInformation creationInfo = new ListCreationInformation();
creationInfo.Title = "My List";
creationInfo.TemplateType = (int)ListTemplateType.Announcements;
List list = web.Lists.Add(creationInfo);
list.Description = "New Description";
list.Update();
context.ExecuteQuery();
Delete a SharePoint list
// Starting with ClientContext, the constructor requires a URL to the
// server running SharePoint.
ClientContext context = new ClientContext("http://SiteUrl");
// The SharePoint web at the URL.
Web web = context.Web;
List list = web.Lists.GetByTitle("My List");
list.DeleteObject();
context.ExecuteQuery();
Add a field to a SharePoint list
This example adds a field to a SharePoint list. add an alias to the using statement for Microsoft.SharePoint.Client namespace so you can refer to its classes unambiguously. For example,
// Starting with ClientContext, the constructor requires a URL to the
// server running SharePoint.
ClientContext context = new ClientContext("http://SiteUrl");
SP.List list = context.Web.Lists.GetByTitle("Announcements");
SP.Field field = list.Fields.AddFieldAsXml("",
true,
AddFieldOptions.DefaultValue);
SP.FieldNumber fldNumber = context.CastTo<FieldNumber>(field);
fldNumber.MaximumValue = 100;
fldNumber.MinimumValue = 35;
fldNumber.Update();
context.ExecuteQuery();