Hallo,
Ich versuchte, den Code und die Arbeiten mit zugewiesenem und nicht-zugewiesenem Benutzer fein laufen zu lassen.
Den Debugger (Befestigung zu w3wp.exe) im Sichtstudio bitte anbringen, um die Ausgabe auszuprüfen.
Hiermit der Code, verwendet wir -
allgemeine Übersteuerungslücke ItemUpdating (SPItemEventProperties Eigenschaften)
{
base.ItemUpdating (Eigenschaften);
wenn (properties.ListTitle.Equals (DocumentLibararyType.Tasks, StringComparison.InvariantCultureIgnoreCase) == zutreffend)
{
SPWeb Aufstellungsort = Null;
Versuch
{
SPListItem spItem = properties.ListItem;
Aufstellungsort = properties.OpenWeb ();
SPGroup spOwnerGroup = site.AssociatedOwnerGroup;
SPUser spCurrentUser = site.CurrentUser;
strStatus = spItem [ItemFiledType.Status] .ToString aufreihen ();
int intIndex = spItem [ItemFiledType.AssignedTo] .ToString () .IndexOf („#");
spAssignedTo = spItem [ItemFiledType.AssignedTo] .ToString aufreihen (). Entfernen (0, intIndex + 1);
spCurrentUserLoginName = site.CurrentUser.LoginName aufreihen;
spCurrentUserName = site.CurrentUser.Name aufreihen; // hinzufügte zers, um zu sehen, wenn „“ selbe wie Name des gegenwärtigen Benutzers zugewiesen ist.
bool blnAllowUpdate = falsch;
wenn (spCurrentUserLoginName.Equals („sharepoint \ \ System“, StringComparison.InvariantCultureIgnoreCase) == falsch)
{
foreach (SPGroup SPG in spCurrentUser.Groups)
{
wenn (site.AssociatedOwnerGroup ! = Null)
{
wenn (SPG. Name.CompareTo (site.AssociatedOwnerGroup.Name) == 0)
{
wenn (strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase) == zutreffend)
{
// dieses ist die Mitteilung, die wir zeigen möchten dem Benutzer
//, wenn he/she versucht, eine aktive Aufgabe zu aktualisieren
properties.ErrorMessage = „Aufgabe bereits abgeschlossen n und kann nicht jetzt aktualisiert werden. “;
//// diese Linie annulliert wirklich die Löschung
Eigenschaften. Löschen = ausrichtet et;
}
sonst
{
blnAllowUpdate = ausrichten en;
}
}
}
}
//, wenn der Aufgabenstatus es komplett ist, ist nicht aktive Aufgabe mehr
// anders annullieren wir die Auslassung
// wenn (strStatus! = „abgeschlossenes“ && strStatus! = „Produktion“ && strStatus! = „Zustimmung verweigert“)
wenn (blnAllowUpdate == falsch)
{
// „spAssignedTo.CompareTo (spCurrentUserName)! = 0,“, das diese Bedingung hinzufügte, um zu sehen, wenn „“ selbe wie Name des gegenwärtigen Benutzers zugewiesen ist.
wenn ((spAssignedTo.CompareTo (spCurrentUserLoginName)! = 0 && spAssignedTo.CompareTo (spCurrentUserName)! = 0) &&
(strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase) == falsch))
{
// dieses ist die Mitteilung, die wir zeigen möchten dem Benutzer
//, wenn he/she versucht, eine aktive Aufgabe zu aktualisieren
properties.ErrorMessage = „dieses Einzelteil ist noch im Gang und kann vom Schöpfer des Einzelteils nur aktualisiert werden. “;
//// diese Linie annulliert wirklich die Löschung
Eigenschaften. Löschen = ausrichtet et;
}
sonst, wenn (strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase) == zutreffend)
{
// dieses ist die Mitteilung, die wir zeigen möchten dem Benutzer
//, wenn he/she versucht, eine aktive Aufgabe zu löschen
properties.ErrorMessage = „Aufgabe bereits abgeschlossen n und kann nicht jetzt aktualisiert werden. “;
//// diese Linie annulliert wirklich die Löschung
Eigenschaften. Löschen = ausrichtet et;
}
}
}
}
Fang (Ausnahme ex)
{
properties.ErrorMessage = „eine interne Störung auftrat beim Handeln von Tätigkeit“ + Environment.NewLine +
ex. Message.ToString ();
Eigenschaften. Löschen = ausrichtet et;
}
}
}
Ich hoffe, es helfe.
Beifall…
Rajendra