среда, 5 марта 2014 г.

Как сохранить поле предшественников задачи в SharePoint

В SharePoint есть такой тип, как задача (task) на базе которых можно построить много всяких интересных и полезных вещей, включая вполне полноценный корпоративный планировщик задач. Единственная вещь, которая не совсем очевидна при работе с задачами - это как программно создать или изменить список предшествующих задач. На самом деле, ничего особо сложного в этом нет.
Вот так, например, можно создать задачку с определенным предшественником:

        protected void CreateChildTask(SPListItem parent)
        {
            var web = SPContext.Current.Web;
            var list = web.Lists["MyTasks"];
            SPListItem item = list.Items.Add();

            item[SPBuiltInFieldId.Title] = "Новая задача";
            SPFieldLookupValueCollection predecessorItems = new SPFieldLookupValueCollection();
            SPFieldLookupValue predecessor = new SPFieldLookupValue(parent.ID, parent.Title);
            predecessorItems.Add(predecessor);
            item[SPBuiltInFieldId.Predecessors] = predecessorItems.ToString();
            item.Update();
        }

А вот так можно добавить предшественника:

        protected void UpdateChildTask(SPListItem parent, SPListItem task)
        {
            SPFieldLookupValueCollection predecessorItems = new SPFieldLookupValueCollection(task[SPBuiltInFieldId.Predecessors].ToString());
            SPFieldLookupValue predecessor = new SPFieldLookupValue(parent.ID, parent.Title);
            predecessorItems.Add(predecessor);
            task[SPBuiltInFieldId.Predecessors] = predecessorItems.ToString();
            task.Update();
        }


Так что, кроме не очевидного шаманства с преобразованием строки в коллекцию и обратно, ничего сложного нет.

Комментариев нет:

Отправить комментарий