MPXJ如何获取MSP内置任务字段与自定义字段列表
MSP内置任务字段获取实现方案
你现有的自定义字段读取逻辑可正常使用,MSP原生预置的内置任务字段不需要从加载的项目文件实例中获取,MPXJ已经将全量内置任务字段定义在TaskField枚举中,直接遍历该枚举即可拿到完整列表。
实现代码
首先引入对应命名空间:
using net.sf.mpxj; using net.sf.mpxj.common;
遍历枚举获取字段信息,可同时拿到字段内部标识和MSP界面展示的友好名称:
foreach (TaskField field in Enum.GetValues(typeof(TaskField))) { // 字段内部唯一标识 string internalName = field.Name; // 与MSP客户端界面显示一致的字段名称 string displayName = MpxjUtility.GetFieldDisplayName(field); // 过滤MPXJ内部预留的未使用字段 if (!internalName.StartsWith("UNUSED") && !string.IsNullOrWhiteSpace(displayName)) { TextBox.AppendText($"内置字段: {displayName} || 标识: {internalName}\n"); } }
注意事项
- MSP内置字段是固定预置属性,和具体读取的mpp文件无关,遍历枚举得到的就是全量默认开箱即用字段
- 将遍历得到的内置字段列表和你之前读取到的自定义字段列表合并,按字段唯一标识去重后,就能得到满足需求的完整字段选择列表
- 如果后续需要获取资源、项目维度的内置字段,对应遍历
ResourceField、ProjectField枚举即可,调用方式和TaskField完全一致
内容的提问来源于stack exchange,提问作者midnite11
相关产品推荐
相关产品推荐

