Adicione valor ao campo Choice por meio da API ClientContext
-
09-12-2019 - |
Pergunta
Gostaria de adicionar e selecionar valores em um campo de escolha em uma biblioteca de documentos.Algo obviamente mais complicado do que eu lembrava.
Estou fazendo algo assim, mas não funciona.O valor é adicionado ao campo nas exibições de lista, mas não à coluna Escolha.
ClientContext ctx = new ClientContext("http://mymachine");
Web currentWeb = ctx.Web;
ctx.Load(currentWeb);
ctx.ExecuteQuery();
SP.List list = ctx.Web.Lists.GetByTitle("Doclib");
ctx.Load(list);
ctx.ExecuteQuery();
ListItemCollection items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items);
ctx.ExecuteQuery();
foreach (ListItem listItem in items)
{
ctx.Load(listItem.File);
ctx.ExecuteQuery();
if (listItem.File.Name.Equals(fileName))
{
var processValue = "A Value";
listItem["MetaProcess"] = processValue;
//SP.FieldChoice itemType = ctx.CastTo<SP.FieldChoice>(list.Fields.GetByTitle("MetaProcess"));
//itemType.Choices = new[] { "Agenda", "Agreement", "Full text", "Minutes", "News Item", "Reference" };
//itemType.Update();
//ctx.ExecuteQuery();
}
listItem.Update();
}
ctx.ExecuteQuery();
Solução
Optei por trabalhar em outra rota usando o Camelot .NET Connector para SharePoint!
Outras dicas
o seguinte funciona para mim.
calendarDropDown = (DropDownList)TemplateContainer.FindControl("calendarDropDown");
if (ControlMode == SPControlMode.New || ControlMode == SPControlMode.Edit)
{
SPWeb currentWeb = SPContext.Current.Web;
SPListCollection lists = currentWeb.Lists;
foreach (SPList list in lists)
{
if (list.BaseTemplate == SPListTemplateType.Events)
{
calendarDropDown.Items.Add(list.Title);
}
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange