我以编程方式批准审批任务。我使用这段代码:
ht[SPBuiltInFieldId.Completed] = "TRUE";
ht["Completed"] = "TRUE";
ht[SPBuiltInFieldId.PercentComplete] = 1.0f;
ht["PercentComplete"] = 1.0f;
ht["Status"] = "Completed";
ht[SPBuiltInFieldId.TaskStatus] = SPResource.GetString(new CultureInfo((int)openTask.Web.Language, false), Strings.WorkflowStatusCompleted, new object[0]);
ht[SPBuiltInFieldId.FormData] = SPWorkflowStatus.Completed;
ht[SPBuiltInFieldId.WorkflowOutcome] = "Schváleno"//Approved in czech language;
ht[SPBuiltInFieldId.TaskStatus] = "Schváleno";//Approved in czech language;
ht["TaskStatus"] = "Schváleno";//Approved in czech language;
参考:Approve a SharePoint workflow task using SharePoint Web Services / Object Model
一切正常,但我认为这段代码很糟糕:
首先,我不明白为什么nessery为SPBuiltInFieldId.TaskStatus和“TaskStatus”定义值?但是当我删除“TaskStatus”任务时未获批准。我看到SPBuiltInFieldId.TaskStatus是字段的特殊id,但为什么它没有写入“TaskStatus”字段的值?
我的第二个更大的问题是为什么我需要将TaskStatus的值放在sharepoint instalation语言字符串形式中。正如您所看到的,我的sharepoint已本地化为捷克语。但是当我转移到另一个共享点实例(斯洛伐克语,英语......)时,这段代码会停止工作。
是否有任何选项可以在sharepoint安装语言中获取文本“Approved”的语言字符串?类似SPBuiltInFieldId.TaskStatus?
答案 0 :(得分:1)
您可以使用SharePoint的本地化功能。所以用
替换所有“已完成”和“Schváleno”SPUtility.GetLocalizedString("$Resources:core,Tasks_Completed", null, web.Language)
代码有两个重要部分:
web.Language - 选项中的值(任务状态)由网络语言决定。在UI(例如设置按钮文本)中,您应该使用:
SPUtility.GetLocalizedString(“$ Resources:core,cui_ButListFormSave”,null,(uint)System.Threading.Thread.CurrentThread.CurrentUICulture.LCID)
因为它使用当前用户的语言,因为SP默认使用模拟。