none
Event Receiver суммирующий элементы дочернего списка RRS feed

  • Вопрос

  • Доброго времени суток!

    Есть два списка, список департаментов и связанный с ним дочерний список отделов каждого из департаментов. Стоит задача в списке департаментов добавлять общее количество работников в данном департаменте (сумма по всем отделам). Для решения данной задачи решил использовать ивент ресивер. Вот код на событие добаления элемента в дочерний список:

      public override void ItemAdded(SPItemEventProperties properties)
            {
                
                if (properties.ListTitle == "OtdelList") //Использую дочерний список
                {
                  
                    using (SPWeb web = properties.OpenWeb())
                    {
                        try
                        {
                            properties.Web.AllowUnsafeUpdates = true;     
                            SPList targetList = web.Lists["DepartmentList"];  //Получаю мастер список
                            SPListItem sourceItem = properties.ListItem;  //получаю добавляемый элемент
                            if (sourceItem["NumEployee"] != null)
                            {
                                SPQuery query = new SPQuery();
                                query.Query = "<Where><Eq><FieldRef Name='ID'><Value Type='Text'>" +  //Ищу в мастер списке тот элемент, который соответствует добавляемому в дочерний
                                    sourceItem["IdDepartment"].ToString() +
                                    "</Value></Eq></Where>";
                                SPListItemCollection foundItems = targetList.GetItems(query);  //Делаю коллекцию из найденного элемента
                                for (int i = 0; i < foundItems.Count; i++)
                                {
                                    try
                                    {
                                        foundItems[i]["NumEployee"] = Convert.ToInt32(foundItems[i]["NumEployee"])
                                            + Convert.ToInt32(sourceItem["NumEployee"]);  //Суммирую имеющеися значение в мастер списке с добавляемым
                                        foundItems[i].SystemUpdate();  //Обновляю
                                    }
                                    catch (Exception e)
                                    {
                                        
                                    }
                                }
                                targetList.Update();
      properties.Web.AllowUnsafeUpdates = false;
     }
                        }
                        catch (Exception e)
                        { }
                    }
                }
                base.ItemAdded(properties);
            }

    Но при добавлении элемента в дочерний список совершенно ничего не происходит. Что здесь может быть не так?

    19 января 2014 г. 10:22

Ответы

Все ответы