我需要在列表中找到一个用户来设置assignedof task属性,这些信息都在列表中。所以我使用这种方法:
public static SPUser GetSPUser(SPListItem item, string key){
SPFieldUser field = item.Fields[key] as SPFieldUser;
if (field != null)
{
SPFieldUserValue fieldValue = field.GetFieldValue(item[key].ToString()) as SPFieldUserValue;
if (fieldValue != null)
{
return fieldValue.User;
}
}
return null;
}
问题在于,当我使用这种方法或这部分代码时,我的工作流程停止而没有说什么。这是我使用它时的代码示例:
using (SPSite site = new SPSite(adress_of_my_site))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Acteurs du projet"];
SPView view = cobj_ListeDesActeursDuProjet.DefaultView;
SPListItemCollection itemcollection = list.GetItems(view);
foreach (SPListItem item in itemcollection)
{
SPUser lobj_acteur = Utilities.GetSPUser(item,"acteur");
// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] =
new ActeursDuProjet()
{
Login = lobj_acteur.LoginName,
Email = lobj_acteur.Email
};
}
}
}
如果我评论我的foreach的内容,我的工作流程也会继续......
如果有人知道它会很酷。
此致 卢瓦克
编辑:代码中的问题
答案 0 :(得分:1)
以下是一些可能有用的调试技巧:
ULS记录
此处应详细报告任何例外情况。
启用所有.NET代码的调试
这将导致调试器在SharePoint和代码中发生异常时中断。缺点是调试器会破坏“正常”异常,不会产生副作用。所以不要被误导!
启用:转到“调试”,“例外”并勾选“公共语言运行时异常”。还可以转到工具,选项,调试和取消选中启用我的代码。然后附加到w3wp.exe。
评论代码
您还可以注释掉所有代码。如果工作流程步骤失败,您知道其他地方存在问题。如果工作流程步骤通过,则开始取消注释代码,直到它失败 - 然后你知道在哪里看。
答案 1 :(得分:0)
我尝试过对此进行评论,但它没有很好地格式化,所以在这里。
这可能很好,但这看起来很可疑:
// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] =
new ActeursDuProjet()
{
Login = lobj_acteur.LoginName,
Email = lobj_acteur.Email
};
我认为它会是这样的:
// dictionary declared somewhere earlier
Dictionary<string,ActeursDuProjet> roles = new Dictionary<string,ActeursDuProjet>();
// inside the foreach
string role = item["Rôle"].ToString();
if (!roles.ContainsKey(role))
{
ActeursDuProjet foo = new ActeursDuProjet();
foo.Login = lobj_acteur.LoginName;
foo.Email = lobj_acteur.Email;
roles.Add(role, foo);
}