我需要找到设置assignedto任务属性列表中的用户,这些信息是在列表中。因此,我使用此方法:

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的内容我的工作流程也在继续......

如果任何人有一个想法,这将是凉爽。

此致 卢瓦克

编辑:在代码问题

有帮助吗?

解决方案

下面是一些调试技巧,可以帮助:

<强> ULS日志

任何例外应当在一些细节这里报道。

作为所有.NET代码启用调试

这将导致调试器打破每当异常在SharePoint发生以及您的代码。缺点是,调试器将打破对身体无副作用的“正常”的例外。所以,不要被误导!

要启用:进入调试,异常和剔公共语言运行时异常。还去工具,选项,调试和勾去掉启用仅我的代码。然后附加到W3WP.EXE。

<强>注释代码

您也可以注释掉所有代码。如果工作流步骤失败,你知道有其他地方有问题。如果工作流步骤的推移,然后开始取消注释代码,直到它失败 - 那么你知道去哪里找。

其他提示

我尝试了上述评论此,但它没有很好地进行格式化,以便在这里。

这可能是好的,但是这看起来可疑对我说:

// 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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top