Ciao,
Ho provato a fare funzionare il codice e gli impianti benissimo con l'utente assegnato e non-assegnato.
Attaccare prego il programma di messa a punto (attaccatura a w3wp.exe) in studio visivo per mettere a punto l'edizione.
Con questo il codice, abbiamo usato -
vuoto pubblico ItemUpdating (proprietà della provvigione supplementare di SPItemEventProperties)
{
base.ItemUpdating (proprietà);
se (== di properties.ListTitle.Equals (DocumentLibararyType.Tasks , StringComparison.InvariantCultureIgnoreCase) allineare)
{
Luogo = posizione di segnale minimo di SPWeb;
prova
{
spItem di SPListItem = properties.ListItem;
luogo = properties.OpenWeb ();
spOwnerGroup di SPGroup = site.AssociatedOwnerGroup;
spCurrentUser di SPUser = site.CurrentUser;
mettere insieme lo strStatus = lo spItem [ItemFiledType.Status] .ToString ();
intIndex di int = spItem [ItemFiledType.AssignedTo] .ToString () .IndexOf (“#");
mettere insieme lo spAssignedTo = lo spItem [ItemFiledType.AssignedTo] .ToString (). Rimuovere (0, intIndex + 1);
mettere insieme lo spCurrentUserLoginName = site.CurrentUser.LoginName;
mettere insieme lo spCurrentUserName = site.CurrentUser.Name; // ha aggiunto per vedere se “assegnato a„ è stesso del nome dell'utente corrente.
blnAllowUpdate di bool = falso;
se (== di spCurrentUserLoginName.Equals (“\ \ sistema dello sharepoint„, StringComparison.InvariantCultureIgnoreCase) falso)
{
foreach (SPGroup spg in spCurrentUser.Groups)
{
se (site.AssociatedOwnerGroup ! = posizione di segnale minimo)
{
se (== 0 di spg. Name.CompareTo (site.AssociatedOwnerGroup.Name))
{
se (== di strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase) allineare)
{
// questo è il messaggio che vorremmo mostrare all'utente
// se prova ad aggiornare un'operazione attiva
properties.ErrorMessage = “operazione già è completato e non può ora essere aggiornato. „;
//// questa linea realmente annulla la cancellazione
proprietà. L'annullamento = allinea;
}
altrimenti
{
il blnAllowUpdate = allinea;
}
}
}
}
// se la condizione di operazione è completa esso non sarà operazione attiva più
// annulliamo al contrario l'omissione
// se (strStatus! = strStatus “completato„ del &&! = strStatus del && “di produzione„! = “approvazione negata„)
se (== del blnAllowUpdate falso)
{
// “spAssignedTo.CompareTo (spCurrentUserName)! = 0„ che questa circostanza ha aggiunto per vedere se “assegnato a„ è stessa del nome dell'utente corrente.
se ((spAssignedTo.CompareTo (spCurrentUserLoginName)! = 0 && spAssignedTo.CompareTo (spCurrentUserName)! = 0) &&
(== di strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase) falso))
{
// questo è il messaggio che vorremmo mostrare all'utente
// se prova ad aggiornare un'operazione attiva
properties.ErrorMessage = “questo articolo è ancora in progresso e può essere aggiornato soltanto dal creatore dell'articolo. „;
//// questa linea realmente annulla la cancellazione
proprietà. L'annullamento = allinea;
}
altrimenti se (== di strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase) allineare)
{
// questo è il messaggio che vorremmo mostrare all'utente
// se prova a cancellare un'operazione attiva
properties.ErrorMessage = “operazione già è completato e non può ora essere aggiornato. „;
//// questa linea realmente annulla la cancellazione
proprietà. L'annullamento = allinea;
}
}
}
}
fermo (eccezione ex)
{
properties.ErrorMessage = “un errore interno ha accaduto mentre faceva l'azione„ + Environment.NewLine +
ex. Message.ToString ();
proprietà. L'annullamento = allinea;
}
}
}
Spero, esso aiuto.
Acclamazioni…
Rajendra