Sharepoint TaskStatus语言字符串

时间:2014-11-26 12:04:51

标签: sharepoint sharepoint-2010 task

我以编程方式批准审批任务。我使用这段代码:

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?

1 个答案:

答案 0 :(得分:1)

您可以使用SharePoint的本地化功能。所以用

替换所有“已完成”和“Schváleno”
SPUtility.GetLocalizedString("$Resources:core,Tasks_Completed", null, web.Language)

代码有两个重要部分:

  1. “$ Resources,core,Tasks_Completed” - 指的是Resources SharePoint文件夹中的core.resx文件。它包含SharePoint内部使用的许多系统资源字符串。例如。在这种情况下的任务状态。
  2. web.Language - 选项中的值(任务状态)由网络语言决定。在UI(例如设置按钮文本)中,您应该使用:

    SPUtility.GetLocalizedString(“$ Resources:core,cui_ButListFormSave”,null,(uint)System.Threading.Thread.CurrentThread.CurrentUICulture.LCID)

    因为它使用当前用户的语言,因为SP默认使用模拟。