1

是否有人设法在使用查找值的任务或项目上以编程方式更新自定义字段?我正在使用 CSOM,代码如下,c#。查找自定义字段会更新,但字段设置为空白,覆盖使用 Web 应用输入的先前值。对“文本”自定义字段的更新工作正常。

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);
        }
    }
}
4

1 回答 1

0

找到了解决方案。您不传递查找 GUID,而是传递 LookupEntry 的内部名称。该值应该类似于 'Entry_...'

这些帖子非常有帮助: https ://social.msdn.microsoft.com/Forums/en-US/c91644b7-3c0f-4d65-a8d7-2dec128d1dcf/project-lookup-custom-field-update-with-csom?forum=项目2010custprog

https://social.msdn.microsoft.com/Forums/en-US/b4d3ee63-965b-4489-8b34-6ad53b128553/csom-update-custom-field-based-on-lookup-table?forum=project2010custprog

于 2016-05-25T06:48:53.877 回答