c# - 如何在 CSOM Project Server 中获取自定义字段任务的值
问题描述
我正在为项目服务器开发控制台应用程序。Atm 我可以读取与项目相关的每个任务的名称和工作百分比。每个任务都有一个具有唯一 ID 的自定义字段。它看起来像这样。
如何获取唯一 ID 的值?例如 84
这是我列出任务名称和工作百分比的代码:
var projColl = projContext.LoadQuery(projContext.Projects
.Where(p => p.Name == projectName)
.Include(
p => p.Name,
p => p.Tasks,
p => p.Tasks.Include(
t => t.Name,
t => t.PercentComplete,
t => t.CustomFields
)
)
);
projContext.ExecuteQuery();
PublishedProject theProj = projColl.First();
PublishedTaskCollection taskColl = theProj.Tasks;
PublishedTask theTask = taskColl.First();
CustomFieldCollection LCFColl = theTask.CustomFields;
Dictionary<string, object> taskCF_Dict = theTask.FieldValues;
int k = 1; //Task counter.
foreach (PublishedTask t in taskColl)
{
Console.WriteLine("\t{0}. {1, -15} {2,-30}{3}", k++, t.Name, t.PercentComplete);
}
我试着用Console.WriteLine("\t{0}. {1, -15} {2,-30}{3}", k++, t.Name, t.PercentComplete,t.CustomFields);
但我只得到
Microsoft.ProjectServer.Client.CustomFieldCollection
如果有帮助,我也知道自定义字段的 InternalName
编辑:我添加了这个示例,但我只得到第一行的值。知道如何循环每一行吗?
解决方案
您只能从第一行获取值,因为LCFColl
它被定义为对象变量的自定义字段,而theTask
不是t
您在循环中使用的变量。移动LCFColl
任务循环内的声明:
foreach (PublishedTask t in taskColl)
{
CustomFieldCollection LCFColl = t.CustomFields;
foreach (CustomField cf in LCFColl)
{
// do something with the custom fields
}
Console.WriteLine("\t{0}. {1, -15} {2,-30}{3}", k++, t.Name, t.PercentComplete);
}
推荐阅读
- python - import modulename 的使用与导入模块的命名空间有什么关系?
- c - 此类变量的声明“int (*pfds)[2];” 他们叫什么
- google-apps-script - 如何将嵌套的 JSON 数据写入 Google 表格
- php - 计算需要时间来完成,但我想让它在后台处理并且用户可以访问另一个页面?
- java - 在 Little Endian CPU 架构上运行时,Java 如何处理 Endianess?
- ruby-on-rails - Ruby Review 类创建
- java - 在 C++ 中创建类的实例的两种方法有什么区别?
- angular - 路由更改时服务的角度更改组件状态
- string - 如何使用方案编程语言查找字符串中的字符数?
- python - 使用熊猫在多列中执行应用功能