【问题标题】:SPWorkflowTaskProperties.AssignedTo and "1;#Alice Jackson" formatSPWorkflowTaskProperties.AssignedTo 和“1;#Alice Jackson”格式
【发布时间】:2012-02-28 11:06:58
【问题描述】:

我是 SharePoint 新手。对不起,如果我的问题的答案很明显。

我不明白,如何以编程方式将任务分配给用户。我在 SPWorkflowTaskProperties 中设置属性,所有属性都传递给 Task,但字符串属性 AssignedTo 没有。

//next variants don't works
TaskProperty.AssignedTo = "1;#Michael Pushin";
TaskProperty.AssignedTo = "Michael Pushin";    
TaskProperty.ExtendedProperties["Assigned To"] = "1;#Michael Pushin";

我正在尝试实现委托模式。为此,我从具有字段类型 Person 的列表项中读取信息。

SPList functList = thisWeb.Lists["Functions"];
SPListItem functItem = functList.GetItemById(1);
object person = functItem["Default Assignee"];
string assignee = person.ToString();
//At this point assignee equals "1;#Michael Pushin"

当我手动设置“分配给”字段并以编程方式读取时,它的值也等于“1;#Michael Pushin”。

如何以编程方式从 person 变量的值设置“分配给”字段?

提前谢谢你。

PS:对不起我的写作。英语不是我的母语。

PPS:SharePoint 2010。

【问题讨论】:

  • 当我设置 TaskProperty.AssignedTo = "MYDOMAIN\\michael.pushin" 一切正常,但如何将数据从 "1;#Michael Pushin" 格式转换为合适的格式? TaskProperty.AssignedTo = "MYDOMAIN\\Michael Pushin" 不起作用

标签: .net sharepoint task


【解决方案1】:

不要将人转换为字符串。

object person = functItem["Default Assignee"];

此时,人就像 SPFieldUserValue 一样。转换为实际类型,看看您是否能够从中取出 SPUser,然后获取 SPUser.Login。

【讨论】:

  • 不,此时对象 person 的实际类型已经是字符串。可能存在另一种获取项目的方法,如 SPFieldUserValue 类型?或者我该如何查找它?可能我必须使用 ID=1 (1;#Michael Pushin) 通过查找来获取它,但是在哪里?
  • var login = (new SPFieldUserValue(spWeb, asignee)).User.Login;
【解决方案2】:

我找到了解决方案! 感谢这篇文章:http://blogs.windowsclient.net/mortezanaeimabadi/archive/2011/09/17/how-to-obtain-spuser-object-from-values-such-as-quot-27-morteza-quot.aspx

SPFieldUserValue  userValue = new SPFieldUserValue(SPContext.Current.web, functItem["Default Assignee"].ToString());
SPUser userObject = userValue.User;
string asignee=userObject.ToString();
//hurray! asignee="MYDOMAIN\\michael.pushin"

【讨论】:

    【解决方案3】:

    我发现这在通过工作流设置分配的用户时起作用:

             taskProperties.AssignedTo = workflowProperties.OriginatorUser.LoginName;
    

    【讨论】:

      【解决方案4】:

      这对我有用

      SPFieldUserValue  userValue = new SPFieldUserValue(SPContext.Current.web,     
      functItem["Default Assignee"].ToString());
      SPUser userObject = userValue.User;
      string asignee=userObject.ToString()
      

      感谢米哈伊尔!

      【讨论】:

      • 嘿,Jase,这应该是个评论。
      猜你喜欢
      • 2015-06-06
      • 2022-01-11
      • 2010-10-21
      • 2019-08-10
      • 2014-08-04
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2017-05-30
      相关资源
      最近更新 更多