Domanda

Ho bisogno di trovare un utente in un elenco per impostare la proprietà compito AssignedTo, queste informazioni sono in un elenco. Quindi io uso questo metodo:

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

Il problema è che quando uso questo metodo o questa parte del codice, la mia fermata flusso di lavoro senza dire niente. Ecco un esempio di codice quando lo uso:

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

    }


}

Se io commento il contenuto del mio foreach mio flusso di lavoro continua così ...

Se qualcuno ha un'idea che sarà cool.

Saluti, Loïc

modifica: problema nel codice

È stato utile?

Soluzione

Ecco alcuni suggerimenti di debug che potrebbero aiutare:

registri ULS

Eventuali eccezioni devono essere riportati qui in dettaglio.

Attiva il debug per tutto il codice .NET

In questo modo il debugger di rompere ogni volta che si verifica un'eccezione in SharePoint così come il vostro codice. Il rovescio della medaglia è che il debugger si romperà sulle eccezioni 'normali' che non hanno effetti collaterali. Quindi non lasciatevi ingannare!

Per consentire: Vai debug, eccezioni e spuntare Eccezioni Common Language Runtime. Anche andare in Strumenti, Opzioni, il debug e deselezionare Attiva Just My Code. Poi allegare al w3wp.exe.

Codice Commentando

Si potrebbe anche commentare tutto il codice. Se il passo del flusso di lavoro viene a mancare, si sa che c'è un problema altrove. Se il passo del flusso di lavoro passa, quindi avviare il codice decommentando fino a quando non fallisce -. Poi si sa dove guardare

Altri suggerimenti

Ho provato a commentare questo sopra, ma non ha formatto bene ecco che è.

E 'probabilmente va bene, ma questo sembra pesce a me:

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

penserei che sarebbe qualcosa di simile:

// 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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top