skip to Main Content

Pomieszane Content Type na listach

Klient chce dodatkowej listy na kolejny release. “Proste” – myślisz – “zajmie mi to max 2h”. Wrzucasz do paczki definicję i instancję, wdrażasz… I widzisz, że nowa lista ma te same kolumny co lista, która jest w paczce od paru tygodni. Sprawdzasz Content Type ID, weryfikujesz listy – nie wiesz gdzie jest błąd. Mijają kolejne godziny, a nikt nie wie co jest źródłem problemu..

Objawy

  • Po wdrożeniu paczki WSP okazuje się, że co najmniej dwie listy mają takie same CT oraz widoki.
  • Pomimo przenoszenia list i CT do docelowego feature’a, po otworzeniu przez VS dodawany jest nowy feature (najczęściej Feature1)

Przyczyna

Najprawdopodobniej wszystkie listy sprawiające problem są zdefiniowane deklaratywnie (przez Schema.xml oraz Elements.xml), zostały umieszczone w tym samym feature i posiadają taki sam TemplateTypeId.

Rozwiązanie

Nadać każdej z list inne TemplateTypeId

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
 <ListInstance Title="..." OnQuickLaunch="..." TemplateType="1000" Url="..." Description="...">
 </ListInstance>
</Elements>
 
<xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
 <ListTemplate Name="..." Type="1000" BaseType="..." OnQuickLaunch="..." DisplayName="..." />
<Elements>

Proponuje się, żeby zacząć numerowanie od 1000, omijając te już używane.

Dlaczego?

Według definicji elementu ListTemplate na MSDN atrybut Type musi być unikalny dla feature’a (ale już nie musi być unikalny w całej solucji). W innym wypadku VS samo utworzy nowy feature i tam umieści pliki. Dlaczego tak się dzieje? Na to odpowiedzi nie znalazłem.

Na co uważać

Podczas poruszania tego tematu, niektórzy twierdzą, że używanie TemplateTypeId spoza puli powoduje braki w funkcjonalności list

Mimo, że ja nigdy nie zauważyłem problemów podczas stosowania tej metody, warto mieć to na uwadze.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Back To Top