The SharePoint 2010 Client Object Model isn’t the best documented thing in the world, but it sure does make some tasks a lot easier (without requiring execution on the sharepoint server itself)
I needed to add an option to a dropdown list in a bunch of document libraries. Here’s how:
...
using sp = Microsoft.SharePoint.Client;
...
private void AddChoicesToField()
{
using (sp.ClientContext cxt = new sp.ClientContext("http://sharepointserver"))
{
//Basic code to load the list
sp.Web myWeb = cxt.Site.OpenWeb("http://sharepointserver/sitename");
cxt.Load(myWeb);
sp.List myList = myWeb.Lists.GetByTitle("MyListName");
cxt.Load(myList);
//The field must be cast to a FieldChoice using context.CastTo
sp.FieldChoice myField = cxt.CastTo<sp.FieldChoice>(myList.Fields.GetByInternalNameOrTitle("My Field Name"));
cxt.Load(myField);
cxt.ExecuteQuery();
//Copy the choices to a string list
List<string> OptionList = new List<string>(myField.Choices);
//Add whatever new values you want to the list
OptionList.Add("New Value");
//Convert the list to a string array and assign it to the Choices parameter
myField.Choices = OptionList.ToArray();
myField.Update();
cxt.ExecuteQuery();
}
}
Make sure your project has a reference to Microsoft.SharePoint.Client and Microsoft.SharePoint.Client.Runtime.
Awesme!Thanks. I was breaking head to find out why mere choice item cannot be added directly.