The example in this topic show how to use CSOM to Set List Content Type Columns Order in SharePoint
- Please follow the steps below to execute the code in Visual Studio using
Console Application. You can customize the solution according to your requirements.
- Check the article to
Connect to SharePoint context using CSOM. This is very helpful
if you are doing any programming in CSOM.
- Don't forget to use the assemblies as mentioned in the code.
How to run CSOM code in SharePoint?
- Open your Visual Studio.
- From the template, select Console Application as shown in the screenshot
- Select the .Net Framework version from the top drop-down as well.
You can also change the .Net Framework after creating the solution.
- Enter Project Name, Location and Solution
Name and click on OK.
- Now your program.cs file will open. Copy the code in main function.
- Once you are done with your code, just hit F5 or Run the application.
- using Microsoft.SharePoint.Client;
- using System.Linq;
-
- using (ClientContext
clientContext = new ClientContext("http://MyServer/sites/MySiteCollection"))
- {
-
// clientcontext.Web.Lists.GetById - This option also can be used to get the list
using List GUID
-
// This value is NOT List internal name
-
List targetList = clientContext.Web.Lists.GetByTitle("a b");
-
- clientContext.Load(targetList.ContentTypes);
- clientContext.ExecuteQuery();
-
ContentTypeCollection contentTypeCollection
= targetList.ContentTypes;
-
-
// Mention Target Content Tye Name here
-
ContentType contentTypeOrder
= (from contentType in
contentTypeCollection where contentType.Name ==
"Event" select
contentType).FirstOrDefault();
-
-
// Code to set Content type columns order.
-
if (contentTypeOrder !=
null)
- {
-
// enter columns name with comma separated(,) in order you want them in List content
type
-
string[] columnsTitle =
"Category,Description".Split(new char[] {
',' }, StringSplitOptions.RemoveEmptyEntries);
-
List<string>
internalColumnNames = new
List<string>();
-
Field field = null;
- clientContext.Load(contentTypeOrder.Fields);
- clientContext.ExecuteQuery();
-
foreach (string
title in columnsTitle)
- {
- field =
(from fieldObject in
contentTypeOrder.Fields
-
where fieldObject.Title
== title || fieldObject.InternalName == title
-
select fieldObject).FirstOrDefault();
- internalColumnNames.Add(field.InternalName);
- }
-
- contentTypeOrder.FieldLinks.Reorder(internalColumnNames.ToArray());
-
-
// UpdateChildren - bool, this value indicates whether the children content type(inheriting
from this Content Type) needs to be updated
- contentTypeOrder.Update(false);
- targetList.Update();
- clientContext.ExecuteQuery();
-
- }
- }
Thank you for reading this article. This code was tested in SharePoint 2013