C# 无法使用csom更新具有查找表GUID的任务或项目的CustomField
是否有人在使用查找值的任务或项目上以编程方式更新自定义字段?我使用的是CSOM,代码如下,c#。查找自定义字段不会更新,但字段设置为空,覆盖以前使用Web App输入的值。“文本”自定义字段的更新工作正常C# 无法使用csom更新具有查找表GUID的任务或项目的CustomField,c#,csom,psi,C#,Csom,Psi,是否有人在使用查找值的任务或项目上以编程方式更新自定义字段?我使用的是CSOM,代码如下,c#。查找自定义字段不会更新,但字段设置为空,覆盖以前使用Web App输入的值。“文本”自定义字段的更新工作正常 private void SendCode() { ProjectContext context; using (context = new ProjectContext(ConfigurationManager.AppSettings["psUrl"])) {
private void SendCode()
{
ProjectContext context;
using (context = new ProjectContext(ConfigurationManager.AppSettings["psUrl"]))
{
context.Load(context.Projects,
pj => pj.Include(
p => p.Id,
p => p.Name));
context.Load(context.CustomFields,
lts => lts.Include(
lt => lt.Name,
lt => lt.InternalName));
context.ExecuteQuery();
// Output Status is a Custom Filed referring to a lookup table called Output Status with 6 status values
string customFieldName = "Output Status";
// A routine to get the correct GUID from the lookup Table
object customFieldValue = new Guid("1aded2bc-67ad-49e4-9c52-a9dca4ea09a5");
foreach (PublishedProject pp in context.Projects)
{
DraftProject proj2Edit = pp.CheckOut().IncludeCustomFields;
context.Load(proj2Edit.Tasks,
ts => ts.Include(
t => t.Id,
t => t.Name,
t => t.CustomFields,
t => t.OutlineLevel,
t => t.IsSummary));
context.ExecuteQuery();
var cfInternalName = context.CustomFields.First(cf => cf.Name == customFieldName).InternalName;
DraftTask newTask = proj2Edit.Tasks.First(t => t.Name == "REI and PPR Monitoring");
newTask[cfInternalName] = customFieldValue; // How should you be setting the GUID?
proj2Edit.Publish(true);
QueueJob qJob = context.Projects.Update();
JobState jobState = context.WaitForQueue(qJob, QueueTimeout);
}
}
}
找到了解决办法。您传递的不是查找GUID,而是查找条目的网名。该值应该类似于“Entry\uux…” 这些帖子非常有用:
找到了解决方案。您传递的不是查找GUID,而是查找条目的网名。该值应该类似于“Entry\uux…” 这些帖子非常有用: