我正在制作一个sharepoint状态机工作流程。第一个状态具有“创建具有内容类型的任务”作为任务。内容类型有一个名为“isApproved”的字段。我没有使用任何infopath表格。我试图获取fthat字段的值来评估文档是否被批准。无论我做什么,我都会得到“对象未设置为对象的实例”。
我尝试了以下所有方法:
createTaskWithContentType1_TaskProperties1.ExtendedProperties["isApproved"].ToString();
onTaskChanged1_AfterProperties1.ExtendedProperties["isApproved"].ToString();
onTaskChanged1.AfterProperties1.ExtendedProperties["isApproved"].ToString();
我做错了什么???
答案 0 :(得分:1)
我曾经遇到类似的问题,我必须获得字段ID才能访问该字段。我就这样做了:
Guid isApprovedFieldId = worflowProperties.TaskList.Fields["isApproved"].Id;
string approvalStatus = (string)(onTaskChanged1_AfterProperties1.ExtendedProperties[isApprovedFieldId]);
答案 1 :(得分:0)
我知道这个答案来得太晚了,但我认为很多人都喜欢这个帖子......
字段“isApproved”是示例工作流中msft通常使用的infopath任务表单的函数。此字段在基本内容类型任务中肯定不可用,这些任务实际上只是与InfoPath完全无关的简单SharePoint任务表单和“isApproved”字段。您需要做的是获取任务的后缀,查询“状态”字段并确定用户是否完成了任务。如果您向名为“已批准”的任务添加了另一列,则使用taskItem [“fieldName”]方法而不是[扩展属性]查询该字段。
希望这有助于某人!
答案 2 :(得分:0)
阿伦,
除了Abs说的话。我还建议您在获取其ID之前检查该字段是否实际存在。像这样......
if (worflowProperties.TaskList.Fields["isApproved"] != null)
{
Guid isApprovedFieldId = worflowProperties.TaskList.Fields["isApproved"].Id;
string approvalStatus = (string)(onTaskChanged1_AfterProperties1.ExtendedProperties[isApprovedFieldId]);
}