Hoje eu tenho uma situação para adicionar o tipo de conteúdo a uma lista rapidamente, então, conforme a lista é criada, eu preciso adicionar o tipo de conteúdo existente à lista. Fiz uma pequena pesquisa, mas todos estão apontando para atualizar o conteúdo ype por ID. então, aqui está um trecho que usei para lidar com a situação. Eu sei que não é prefeito, mas fará o truque.
Vamos detalhar o código, aqui meus parâmetros,
- Contexto depois de autenticado
- Matriz de lista precisa adicionar um tipo de conteúdo
Fluxo do módulo conforme abaixo,
- Obtenha todo o tipo de conteúdo da coleção de tipo de conteúdo
- Aqui, minha suposição é o nome da lista e o nome do tipo de conteúdo é o mesmo
- Vola agora temos os detalhes do tipo de conteúdo, como nome e ID
- Obtenha a lista por nome
- Defina ContentTypesEnabled = true .
- Em seguida, podemos adicionar o tipo de conteúdo à lista por ID do tipo de conteúdo
- context.ExecuteQuery ()
Pronto, a lista é atualizada com tipo de conteúdo por nome, fique à vontade para dar seus comentários e sugestões.
public void setListContentType(ClientContext context, String listArray)
{
Web web = context.Web;
try
{
dynamic listJSON = Newtonsoft.Json.JsonConvert.DeserializeObject(listArray);
foreach (var lstItem in listJSON)
{
ContentTypeCollection sitContType = web.ContentTypes;
context.Load(sitContType);
context.ExecuteQuery();
foreach (ContentType ctype in sitContType)
{
if (lstItem.Name == ctype.Name)
{
Console.WriteLine("Available Cont Type: " + ctype.Name+" ID : "+ctype.Id);
ContentType ct = context.Web.ContentTypes.GetById(ctype.Id.ToString());
List lst = context.Web.Lists.GetByTitle(lstItem.Name.ToString());
lst.ContentTypesEnabled = true;
lst.ContentTypes.AddExistingContentType(ct);
}
}
context.ExecuteQuery();
Console.WriteLine(lstItem.Name+" list content type is updated");
}
}
catch (Exception e)
{
Console.WriteLine("Something went wrong in setListContentType Module : " + e);
}
}