Question

Je dois trouver un utilisateur dans une liste pour définir la propriété de la tâche AssignedTo, ces informations sont dans une liste. Donc, j'utilise cette méthode:

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;
 }

Le problème est que quand j'utilise cette méthode ou cette partie de code, mon arrêt de workflow sans dire quoi que ce soit. Voici un exemple de code lorsque je l'utilise:

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 
                };
        }

    }


}

Si je commente le contenu de mon foreach mon flux de travail continue ainsi ...

Si quelqu'un a une idée ce sera cool.

Cordialement, Loïc

edit: problème dans le code

Était-ce utile?

La solution

Voici quelques conseils de débogage qui pourraient aider:

journaux ULS

Toute exception doit être signalé ici en détail.

Activer le débogage pour tout le code .NET

Cela entraînera le débogueur de rompre chaque fois qu'une exception se produit dans SharePoint ainsi que votre code. L'inconvénient est que le débogueur se brisera sur les exceptions « normales » qui causent pas d'effets secondaires. Alors ne soyez pas induits en erreur!

Pour activer: Allez Debug, les exceptions et cocher Exceptions Common Language Runtime. Allez aussi sur Outils, Options, débogage et décocher Activer juste mon code. Puis attacher à W3WP.exe.

Code Commentant

Vous pouvez également commenter tous de votre code. Si l'étape de workflow échoue, vous savez qu'il ya un problème ailleurs. Si l'étape de workflow passe, puis lancez le code décommentant jusqu'à ce qu'il échoue -. Alors vous savez où regarder

Autres conseils

J'ai essayé de commenter ce ci-dessus, mais il ne formate pas bien si elle est ici.

Il est sans doute très bien, mais cela semble louche pour moi:

// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] = 
    new ActeursDuProjet()
    { 
     Login = lobj_acteur.LoginName, 
     Email = lobj_acteur.Email 
    };

Je pense que ce serait quelque chose comme:

// 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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top