Hi,
Jag försökte spring kodifiera och fungerar fint med den tilldelade och non-tilldelade användaren.
Behaga bilagan avlusaren (bilaga till w3wp.exe) i visuellt hjälpmedelstudio för att testa utfärda för fel.
Härmed kodifiera, har vi använt -
offentlig åsidosättande utan laga kraft ItemUpdating (SPItemEventProperties rekvisita)
{
base.ItemUpdating (rekvisita);
om, riktig == (för properties.ListTitle.Equals ( DocumentLibararyType.Tasks, StringComparison.InvariantCultureIgnoreCase))
{
SPWeb plats = ogiltigt;
försök
{
SPListItem spItem = properties.ListItem;
plats = properties.OpenWeb ();
SPGroup spOwnerGroup = site.AssociatedOwnerGroup;
SPUser spCurrentUser = site.CurrentUser;
stränga strStatusen = spItem [ItemFiledType.Status] .ToString ();
int-intIndex = spItem [ItemFiledType.AssignedTo] .ToString () .IndexOf (”nr.”);
stränga spAssignedToen = spItem [ItemFiledType.AssignedTo] .ToString (). Ta bort (0, intIndex + 1);
stränga spCurrentUserLoginName = site.CurrentUser.LoginName;
stränga spCurrentUserName = site.CurrentUser.Name; // tillfogade för att se, om ”tilldelad till” är samma som känd av strömanvändare.
boolblnAllowUpdate = falskt;
om, falsk == (för spCurrentUserLoginName.Equals (”sharepoint\ \ system”, StringComparison.InvariantCultureIgnoreCase))
{
foreach (SPGroup spg i spCurrentUser.Groups)
{
om (site.AssociatedOwnerGroup ! = ogiltigt)
{
om, == 0 (för spg. Name.CompareTo (site.AssociatedOwnerGroup.Name))
{
om, riktig == (för strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase))
{
// detta är meddelandet som vi skulle något liknande för att visa till användaren
// om henne försök att uppdatera en aktivuppgift
properties.ErrorMessage = ”uppgiften ar avslutad och kan redan inte uppdateras nu. ”;
//// som detta fodrar avbryter faktiskt borttagningsen
rekvisita. Annulleringen = true;
}
annars
{
blnAllowUpdate = true;
}
}
}
}
//, om uppgiftsstatusen är färdig det, är inte den något mera aktivuppgiften
// annars vi avbryter raderingen
// om (strStatusen! = ”avslutad” &&strStatus! = ”produktion” &&strStatus! = ”förnekat godkännande”)
om (falsk blnAllowUpdate==)
{
// ”spAssignedTo.CompareTo (spCurrentUserName)! = 0,” som detta villkorar ökat för att se, om ”tilldelad till” är samma som känt av strömanvändare.
om ((spAssignedTo.CompareTo (spCurrentUserLoginName)! = 0 && spAssignedTo.CompareTo (spCurrentUserName)! = 0) &&
falsk == (för strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase)))
{
// detta är meddelandet som vi skulle något liknande för att visa till användaren
// om henne försök att uppdatera en aktivuppgift
properties.ErrorMessage = ”detta objekt är stilla pågående och kan endast uppdateras av skaparen av objektet. ”;
//// som detta fodrar avbryter faktiskt borttagningsen
rekvisita. Annulleringen = true;
}
annars, om, riktig == (för strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase))
{
// detta är meddelandet som vi skulle något liknande för att visa till användaren
// om henne försök att ta bort en aktivuppgift
properties.ErrorMessage = ”uppgiften ar avslutad och kan redan inte uppdateras nu. ”;
//// som detta fodrar avbryter faktiskt borttagningsen
rekvisita. Annulleringen = true;
}
}
}
}
fånga (undantagsföre detta)
{
properties.ErrorMessage = ”ett inre fel uppstod stunder som gör handling” + Environment.NewLine +
före detta. Message.ToString ();
rekvisita. Annulleringen = true;
}
}
}
Jag hoppas, det hjälper.
Jubel…,
Rajendra