如果我们对开发的INFOPATH表单进行反序列化

可以通过task1_Properties.AssignedTo = init.contact[0].AccountId; 设置任务的分配对象。

但是我们如果不想对表单反序列化,而想通过

private string PersonSayComment(Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties task) { if (task.ExtendedProperties.Contains("comments")) { Microsoft.Office.Workflow.Utility.Contact c = Microsoft.Office.Workflow.Utility.Contact.FromName(task.AssignedTo, workflowProperties.Web); return c.DisplayName + " : " + task.ExtendedProperties["comments"] + "\n"; } else return ""; }

方法取得分配对象。 那么在AD里面取到的task2_Properties.AssignedTo = GetNextAssigneeDisplayname(task1_Properties.ExtendedProperties["contact"].ToString());

就会发生错误。因为AD里面并不能找到Displayname,只能找到DisplayID

正确的方法是截取字段

"<my:Person xmlns:my=\"http://schemas.microsoft.com/office/infopath/2003/myXSD/2008-10-24T08:48:02\"><my:DisplayName>总经理</my:DisplayName><my:AccountId>LHVM\\test2</my:AccountId><my:AccountType>User</my:AccountType></my:Person>"

 

Task2_Properties__.ExtendedProperties["contact1"].ToString().Split (new string[]{":AccountId>"},StringSplitOptions.None )[1].Replace("</my",String.Empty);

posted on 2008-10-29 17:15  army_god  阅读(414)  评论(0编辑  收藏  举报