Hi,
Судимый ход iий Кодий и работы отлично с заданным и non-заданным потребителем.
Пожалуйста прикрепите debugger (attach к w3wp.exe) в визуально студии для того чтобы отлаживать вопрос.
Herewith Кодий, мы использовали -
общественное свободное пространство ItemUpdating преодоления автоматического действия (свойства SPItemEventProperties)
{
base.ItemUpdating (свойства);
если (== properties.ListTitle.Equals (DocumentLibararyType.Tasks , StringComparison.InvariantCultureIgnoreCase) поистине), то
{
Место = null SPWeb;
попытка
{
spItem SPListItem = properties.ListItem;
место = properties.OpenWeb ();
spOwnerGroup SPGroup = site.AssociatedOwnerGroup;
spCurrentUser SPUser = site.CurrentUser;
зашнуруйте strStatus = spItem [ItemFiledType.Status] .ToString ();
intIndex int = spItem [ItemFiledType.AssignedTo] .ToString () .IndexOf («#");
зашнуруйте spAssignedTo = spItem [ItemFiledType.AssignedTo] .ToString (). Извлекайте (0, intIndex + 1);
зашнуруйте spCurrentUserLoginName = site.CurrentUser.LoginName;
зашнуруйте spCurrentUserName = site.CurrentUser.Name; // добавило для того чтобы увидеть если «задано к» такое же как имя в настоящее время потребителя.
blnAllowUpdate bool = ложно;
если (== spCurrentUserLoginName.Equals («\ sharepoint \ система», StringComparison.InvariantCultureIgnoreCase) ложное), то
{
foreach (SPGroup spg в spCurrentUser.Groups)
{
если (site.AssociatedOwnerGroup ! = null)
{
если (== 0 spg. Name.CompareTo (site.AssociatedOwnerGroup.Name)), то
{
если (== strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase) поистине), то
{
// это будет сообщением мы хотел были бы показать к потребителю
// если он пытается уточнить активно задачу
properties.ErrorMessage = «задача уже завершено и не может быть обновлено теперь. »;
//// эта линия фактическ отменяет delete
свойства. Cancel = true;
}
еще
{
blnAllowUpdate = true;
}
}
}
}
// если состояние задачи законченн оно, то не будет активно задачей больше
// в противном случае мы отменяем пропускание
// если (strStatus! = «завершенное» strStatus &&! = strStatus && «продукции»! = «отказанное утверждение»)
если (== blnAllowUpdate ложное), то
{
// «spAssignedTo.CompareTo (spCurrentUserName)! = 0» это, котор условие добавило для того чтобы увидеть если «задано к» такое же как имя в настоящее время потребителя.
если (, то (spAssignedTo.CompareTo (spCurrentUserLoginName)! = 0 && spAssignedTo.CompareTo (spCurrentUserName)! = 0) &&
(== strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase) ложное))
{
// это будет сообщением мы хотел были бы показать к потребителю
// если он пытается уточнить активно задачу
properties.ErrorMessage = «этот деталь будет все еще внутри прогрессом и может только быть обновлено создателем деталя. »;
//// эта линия фактическ отменяет delete
свойства. Cancel = true;
}
еще если (== strStatus.Equals (FileItemStatusType.Completed, StringComparison.InvariantCultureIgnoreCase) поистине), то
{
// это будет сообщением мы хотел были бы показать к потребителю
// если он пытается уничтожить активно задачу
properties.ErrorMessage = «задача уже завершено и не может быть обновлено теперь. »;
//// эта линия фактическ отменяет delete
свойства. Cancel = true;
}
}
}
}
задвижка (исключение ex)
{
properties.ErrorMessage = «внутренне ошибка произошло пока делающ действие» + Environment.NewLine +
ex. Message.ToString ();
свойства. Cancel = true;
}
}
}
Я надеюсь, оно помогаю.
Приветственные восклицания…
Rajendra