Как-то внезапно в зону моих интересов (и интересов моих заказчиков) попал SharePoint. Сейчас мы (компания BetaCode) занимаемся проектом по внедрению SharePoint и интеграции его с Microsoft Team Foundation Server и Microsoft Project.
Одна из технических задач – создание иерархического списка Tasks с неограниченной вложенностью.
Провели исследования и выяснили, что подходов по созданию иерархий в SharePoint несколько.
Во-первых, можно создать несколько Lookup column: Parent1, Parent2, … , Parent10. И соответственно у элемента второго уровня вложенности задавать Parent1, у элемента третьего уровня – Parent2 и т.п. Далее в View делаем группировку по Parent1, Parent2 и т.п. Это как-то коряво, и это не даёт неограниченной вложенности.
Во-вторых, как вот здесь я узнал, начиная с версии 2007 можно делать интересную штуку. Можно создать тип контента, наследующий Folder. И получим для наших элементов поведение схожее с папками, т.е. можно вкладывать их один в другой.
Это очень просто реализуемый вариант. Но не лишен недостатков. Так, в стандартном View можно смотреть список только каждого уровня в отдельности. Т.е. при открытии списка видим только корневые элементы, при открытии кого-то из этих корневых – видим его дочерние элементы. В общем всё как обычно с папками. А хотелось бы сразу видеть дерево. Примерно как в TFS в запросах Iteration backlog.
В-третьих, можно добавить одну Lookup column Parent, с помощью которой задавать отношения Child-Parent между элементами. А View разработать свой. При этом придется раскуривать объектную модель SharePoint и написано некоторое количество хорошо отлаженного кода При этом хорошо бы воспользоваться толковым контролом для отображения иерархических списков. Например DevExpress TreeList или что-то подобное подешевле.
Возможно позже напишу более подробно о том, как эту задачу решать. Когда закончим.
–
Павел Сурменок