Kategoria: Archiwum: SharePoint

Jak rozwiązywać problemy z błędami programu SharePoint tajemniczy.

Przegląd:

Debugowanie jest trudne przy tworzeniu niestandardowych funkcji dla programu Windows SharePoint Services 3.0 (WSS) lub Microsoft Office SharePoint Server (MOSS). Głównym winowajcą jest, że SharePoint zwykle powierzchni bardzo mało informacji diagnostycznych w przeglądarce sieci web, gdy wystąpi błąd. Ten wpis w blogu zawiera opis jak znaleźć dodatkowe wygenerowane przez system informacji diagnostycznych, które mogą często zapewniają, że dodatkowa szczegół, że potrzebuje w celu identyfikacji przyczyn. To może prowadzić do rozwiązania problemu.

Kiedyś tę technikę z powodzeniem rozwiązać inaczej tajemniczy błędy.

Podejście:

SharePoint zapisuje wiele informacji diagnostycznych dziennika w pliku dziennika, w 12 Ula.

Ula 12"" zazwyczaj znajduje się w "C:\Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12 ". (Nie jestem pewien czy to jest możliwe, 12 Ula żyć gdziekolwiek indziej, W zasadzie).

Chodzi o to, aby znaleźć bieżący plik dziennika, Wymuszenie błędu i następnie szybko otworzyć plik dziennika. Te pliki dziennika są charakteryzowane przez:

  • Dużą ilością informacji. SharePoint generuje bardzo dużą ilość informacji diagnostycznych i zapisuje je do pliku dziennika bardzo szybko. Musisz być szybki palcami aby uchwycić.
  • Wielość. SharePoint nie pisz w jednym pliku dziennika, ale raczej generuje wiele plików dziennika w sekwencji.
  • Skopiuj i wklej ładnie do MS Excel.

Moja ulubiona Metoda:

  1. Otwórz Eksploratora windows, wskazując na 12 hivelogs.
  2. Sortować widok, aby wyświetlić przez Data modyfikacji (najpierw najnowsze).
  3. Wyróżnić najbardziej bieżący plik dziennika.
  4. W oknie przeglądarki sieci web, życie błąd występuje.
  5. Szybko otworzyć bieżącego pliku dziennika i skopiować jego zawartość do MS Excel.
  6. Skok do końca i analizy odpowiednich zapisów.

Inne uwagi:

Domyślnie, Diagnostyka dziennika znajduje się w 12 hiveLOGS katalogu.

MS Best practices (jak Mike T. Microsoft) Państwo, że plik dziennika powinien zostać zapisany w oddzielny dysk twardy. Robi to za pośrednictwem głównego admina. Administrator systemu może zrobić to, w tym przypadku oczywiście trzeba by znaleźć plik dziennika zamiast domyślnego 12 Lokalizacja ul).

Ten wpis dotyczy kwestii takich jak:

  • Przepływu pracy programu SharePoint nie powiodło się z powodu błędu wewnętrznego.
  • (Więcej dodaje się czasem)
  • Ten zapis księgowy był pomocny, diagnozowania błędów przepływu pracy (np.. "Przepływu pracy nie powiodło się z powodu błędu wewnętrznego").

MOSS: Skuteczne wprowadzenie do organizacji

(Ten wpis krzyż pisał między http://paulgalvin.spaces.live.com/blog/ i http://blogs.conchango.com)

Komentarze na tej stronie są moje własne i nie reprezentuje Conchango w pozycji, strategie lub opinii.

Przegląd:

Ten wpis opisuje niektóre informacje na temat dużego (3,000 Użytkownicy) Program Microsoft Office SharePoint Server (MOSS) rozmieszczenia i to, co zrobiliśmy projekt w taki sposób, że klient jest zadowolony i mocno w dół ścieżki która kończy się pełne przyjęcie zestawu funkcji MOSS. Jak pisze wpisu, Jesteśmy około 50% wraz z pierwszej fazy projektu. Jako rzeczy postępu, Będę aktualizacji tego wpisu lub tworzenia nowych wpisów.

W tym konkretnym przypadku, Firma miałem już zainstalowany program SharePoint Portal Server 2003. Grupa to zainstalowany produkt w swego rodzaju "Zobaczmy, czy ktoś dba" mody. Został szybko przyjęty przez wielu użytkowników biznesowych i stał się dość popularny w przedsiębiorstwie w dużych. Jak można sobie wyobrazić, to nie była Najlepsza strategia rozmieszczenia (który klient chętnie przyznaje) i kiedy mech przybył na scenie, klient postanowił "zrobić to dobrze" i nas, aby pomóc im.

Jednym z najwaŜniejszych pytań przed nami, kiedy rozpoczęliśmy realizację tego projektu było: Jak możemy wprowadzić MOSS do tego klienta? Biorąc pod uwagę fakt, że klient miał już doświadczenie z programu SharePoint, Zastanawialiśmy się — Czy trzeba zrobić "różnicy" szkolenia lub nie, które możemy uruchomić z ziemi? Po pracy z kluczowych użytkowników, stwierdziliśmy, że traktujemy to jako zielone pole projekt bardziej sensowne.

Że decyzja dał punkt wyjścia, ale pozostały nam z głównych wymogów dowiedzieć się dobrą strategię dla toczenia MOSS Enterprise. MOSS jest takie duże zwierzę … obejmuje ona zarządzania treścią, Zarządzanie dokumentami, Szukaj, bezpieczeństwa, Określanie odbiorców, zarządzanie projektami, "wspaniałe czterdzieści" szablony, przepływ pracy, złącze danych biznesowych, itp. Para to z faktem, że jest to duża organizacja, może naprawdę korzystać z praktycznie każdym głównym MOSS funkcji i masz zadatki wielki projekt z zasięgu przedsiębiorstw i wiele dobrych rzeczy dzieje się.

Mamy do czynienia z tym problemem raz po raz … MOSS jest jednostka dotrzeć z jego zestaw funkcji przedsiębiorstwa, jeszcze nawet nieco wyrafinowanych klientów mieć twardy czas psychicznie absorpcji tych funkcji, niech sam zawierające znaczne części je do swoich codziennych zajęć.

Nie ma magicznego rozwiązania problemu. Zamiast tego rozwiązania tylko pierwsze kroki, które podjęliśmy z klientem aby doprowadzić ich na drodze do skutecznego przyjęcia długoterminowych.

Zakres:

Jak chciałem zespół do jednostki planu projektu, który zawiera takie kamienie milowe jako "PoepleSoft integracji poprzez usługi BDC zakończone", "Nowy międzydziałowych produkt uruchomienie przepływu pracy kompletny" i "Wykonawczy zarządzania KPI akceptowane", Musiałem zadowolić się czymś mniej. To nie znaczy że mniej"" jest źle. W zasadzie, mniej"" że zdecydowaliśmy się na początkowe przewracać był wyprzedza gdzie byli, zanim zaczęliśmy. W naszym przypadku, mniej"" zwrócił się do:

  • Prosty dokument zarządzania za pomocą biblioteki dokumentów, typy kontroli i zawartość wersji.
  • Efektywne wyszukiwanie oparte na typy i dostosować wyszukiwanie zaawansowane (za pomocą właściwości zarządzane, XSLT do dość rezultaty, itp).

Oprócz powyższych cech całego przedsiębiorstwa (co oznacza, że miały one być kołysany na zewnątrz wobec wszystkich działów i użytkowników), Dodaliśmy następujące pojedynczych w zakresie mini projektów:

  • Proof of concept, BDC integracja.
  • Proces wieloetapowy i wielu gałęzi pracy tworzone przez SPD.
  • Kompleks formularza programu InfoPath.
  • Napawanie KPI dla niektórych procesów biznesowych (prawdopodobnie HR nabycia talentów w naszym przypadku, choć to może się zmienić).

Zakres tutaj nie jest 100% dokładne, ale przedstawiciel naszego podejścia i wystarczające do mojego celu tutaj, co jest do wyjaśnienia, co uważam za "skuteczne" wprowadzenie Mech, który będzie klient mocno w dół złoty ścieżka do pełnego przyjęcia MOSS.

Nie będę pisać dużo więcej o pojedynczych w ten wpis. Chcę podkreślić, że są częścią naszej strategii nadrzędne. Pomysł jest do realizacji funkcji zarządzania i Szukaj dokumentu rdzeń dla wszystkich użytkowników jednocześnie zapewnić wysoce funkcjonalne, wysoki widoczne i wysoce reprezentatywne przykłady innych podstawowych funkcji MOSS, które są po prostu poza możliwości większości użytkowników do wchłonięcia na tym wczesnym etapie. Jednakże, będą one "tam" i można mieć nadzieję, że innych części jednostki gospodarczej będzie znać lub dowiedzieć się o nich i ma te cechy dla siebie, prowadzące do przyjęcia większej. Tych sukcesów pojedynczych służą również nasz zespół sprzedaży "amunicji" dla powodzeniem zdobywając drugi, trzeci i n faza projektów.

Co my zrobiliśmy wprowadzić i dlaczego?

O osiedlili się na zarządzanie dokumentami i Szukaj jako podstawowy wymóg całego przedsiębiorstwa, musieliśmy zacząć gromadzić dane. Jako praktyczny, to obracał się wokół zrozumienie ich dokumentów i który ostatecznie mapowane do zrozumienia typy zawartości.

I uznaliśmy, że to jest trudne do wyjaśnienia typy zawartości bez wizualnych doradcy. Bardziej techniczne Ludowej można spacerem od dyskusję na temat typów zawartości, gdy CT są opisane w kategoriach bazy danych. "A CT jest podobna do tabeli bazy danych, ma kolumn i kolumn są definiowane zgodnie z typów danych, ale CT typy danych obejmują więcej niż prosta liczba całkowita/Data, ale również wybór"" i "wyszukiwania" i tym podobne." Możemy mówić o "rozszerzenie" typy zawartości, Podobnie jak jeden może odziedziczyć funkcjonalności klasy bazowej w języki obiektowe. Jednak to oczywiście nie pomocne dla transportu w departamencie admin osoba, która ma nie zaplecza technicznego. Tj, prawie wszyscy, że sprawy w MOSS rozmieszczenia.

Za pomocą biały deska jest niepewni. Już przedstawiony pomysł typ zawartości i genialny ciągnione (i tak wydają się) Zdjęcia typów zawartości i to, co robią dla Ciebie w Szukaj i jak może być rozszerzona, itp. W końcu, to czuje się jak niektóre żarówki mają włączone, ale wynikowy obraz biały deska jest bałagan.

To doprowadziło nas do naszego miejsca lądowania bieżącej i tak daleko najbardziej skuteczne: stronę piaskownicy mech skonfigurowane tak, aby pokazać te funkcje.

Korzystanie z witryny piaskownicy, pokazujemy:

  • Typy zawartości:
    • Tworzenie CT z wielu typów danych (tekst, Data, wybór, wartość logiczna, wyszukiwania, itp).
    • Rozszerzenie CT przez tworzenie nowych CT w oparciu o nadrzędny.
    • Wyszukiwanie dokumentów przy użyciu metadanych CT.
  • Biblioteki dokumentów:
    • Kojarzenie jednego CT z biblioteki.
    • Co się dzieje, gdy możemy przesłać dokument do biblioteki?
    • Kojarzenie wielu CT z biblioteką dokumentu.
    • Co się dzieje, gdy możemy przesłać dokument do biblioteki?
    • Filtrowanie i sortowanie za pomocą nagłówków kolumn w doc lib.
    • Widok biblioteki dokumentów:
      • Sortowanie
      • Grupowanie
      • "Szybki zapis" (widok arkusza danych)
      • "Bez znaczników danych" (Aby pomóc w migracji do MOSS z innych źródeł zawartości; Więcej o tym poniżej).

Stronie piaskownicy:

Zaprojektowaliśmy stronę piaskownicy się stałym elementem w środowisku programistycznym stosowaną do celów szkoleniowych długo po kończymy projektu i zawiera kilka artefaktów, zgodnie z opisem:

Typy zawartości:

Zdefiniowaliśmy następujące typy zawartości: Faktury, Zamówienie zakupu, Usługi faktury.

Wybraliśmy zamówienia zakupu i faktura, ponieważ są one mniej lub bardziej powszechnie pod
stanął podmiotów. Wszyscy w firmie rozumie, że faktura jest zapotrzebowanie na płatności do klienta dla kwota wydane na pewnym Data należy zwrócić na niektóre warunki płatności. Prowadzi to do definicji naturalne CT, który nazwaliśmy "szkolenia faktury" (aby odróżnić go od innego rodzaju faktury). Podobnie łatwo zdefiniowano zamówienia zakupu. Stworzyliśmy również "szkolenia usługi faktury" tworząc nowe CT w oparciu o faktury szkolenia"" CT i dodał tylko jedną kolumnę, "świadczonych usług".

Z powyższych, Teraz możemy pokazać kilka kluczowych cech CT bez zagłębiania się próbuje najpierw wyjaśnić pojęcie abstrakcyjne; wszyscy już rozumie, co rozumiemy przez "faktury" i "zamówienie zakupu" i zamiast skupiać się na mechanice CT sam.

Listy niestandardowe:

CT z kolumn typu "wyszukiwania" wskaż polecenie niestandardowe listy lub biblioteki dokumentów. Możemy użyć tego szeroko i do piaskownicy, stworzyliśmy jedną wspieranie niestandardową listę zawierającą klientów. Wybraliśmy klientów, bo to jest pojęciem łatwe do zrozumienia i łatwe do wykazania. CT faktura zawiera kolumna, "klient" który jest zdefiniowany typ wyszukiwania"" co wskazuje na tej liście.

Stworzyliśmy listę niestandardową podobne do zarządzania "dostawców" na zamówienie"" CT.

Biblioteki dokumentów:

Stworzyliśmy dwie biblioteki dokumentów: "Faktury" i "Mieszane dokumentów".

Mamy skonfigurowane do biblioteki dokumentów faktur do zarządzania dokumentami tylko CT typu "Faktury".

Mamy skonfigurowane dokumentów mieszanych"" Biblioteka do zarządzania wszystkie trzy CT.

Utwórz kilka widoków, które pokazują, sortowanie, Filtrowanie, arkusz danych i grupowanie.

Wyszukiwanie:

Mamy zdefiniowane dwa nowe właściwości zarządzane i Odwzorowano je do płatnika i odbiorcy.

Mamy utworzenia nowej witryny wyszukiwania dostosowane wcześniej i zmodyfikowane, aby umożliwiać użytkownik wobec zrewidować pod kątem "faktury" za pomocą tych dwóch właściwości zamapowanych.

Modyfikowanie XSLT tak aby numer faktury i klienta, Kiedy obecny, pojawiają się w tabela HTML w kolorze jasny. Celem jest wykazanie, że możliwe jest takie formatowanie.

Całość:

Możemy zorganizować dla kluczowych użytkowników do udziału w demo.

Podążamy za ten prosty skrypt:

  1. Opisać znaczenie i cel CT, za pomocą faktur i zamówienia jako przykłady.
  2. Pokaż faktury definicji CT a jednocześnie zapewniając, że nie trzeba używać tych ekranów, sami, po prostu odebrać w koncepcji.
  3. Idź do biblioteki dokumentów faktur.
  4. Przesłać dokument.
  5. Wykazać, że klient drop niedziałający naprawdę pochodzą z listy niestandardowej.
  6. Dodawanie nowego klienta do listy odbiorców, a następnie zaktualizować faktury ostatnio przesłane dane meta z nowo utworzonego klienta.
  7. Przełącz się do "mieszanych dokumentów" biblioteki i przesłać dokument. Wyjaśnić, jak system monituje o typie dokumentu.
  8. Idź do biblioteki dokumentów faktur i Pokaż jak kliknięcie na nazwę kolumna zmienia kolejność sortowania.
  9. Wykazać, kolumna poziom filtrowania.
  10. Pokaż różne widoki, które wykazują wielopoziomowe sortowanie, filtrowania i grupowania.
  11. Pokaż widok Arkusz danych.
  12. Wyjaśnić cel "nieoznakowanego dokumentu" Widok.
  13. Przełącz się do dostosowane wyszukiwanie zaawansowane.
  14. Do tej pory, Ostatnio przesłanych dokumentów należy pełzający i indeksy, więc przeprowadzić wyszukiwanie, która pokazuje możliwości lokalizowania faktury za pośrednictwem właściwości zamapowanych.
  15. Musimy wykazać różnicę między wyszukiwanie za pomocą właściwości zamapowanych vs. po prostu Szukaj tekstu.

W tym momencie, mniej lub bardziej skończymy z demo. Wydaje się, aby wziąć o 30 do 45 minut, zależności od tego, jak wiele pytań ludzie pytają.

Następnie wysyłamy je do swoich biurek z "pracę domową". Składa się z prostego arkusza kalkulacyjnego excel, gdzie możemy poprosić ich, aby zdefiniować dla nas co oni myślą, że muszą w CT, zarówno na wysokim poziomie (tylko nazwa i biznes cel) jak i typ danych kolumny będzie przechowywać w kolumnie. Nie pytamy ich do definiowania typów danych kolumn w warunkach MOSS, ale warunki biznesowe.

Podsumowując:

Stworzyliśmy piaskownicy środowiska, które możemy użyć, aby wykazać pewne podstawowe funkcje MOSS których odwołanie są całego przedsiębiorstwa.

Możemy wzorowany zrozumiały i wspólne podmiotów tak, że użytkownicy mogą skupić się na MCHU i nie ugrzęznąć na podmioty / Przykłady, sami.

Użytkownicy biznesowi spacerem od tezy sesje z "pracę domową" w postaci dokumentów programu excel, które teraz są one właściwe, do wypełnienia i używać do projektowania własnych typów zawartości pierwszego cięcia.

Wreszcie, jak możemy wykonać dema w czasie, sami członkowie zespołu klienta stają się bardziej zdolnego do przodu, demo na siebie i ogólnie Darmowe do reszty z nas się do pracy w bardziej złożonych problemów, jak globalny taksonomii, złożone przepływy pracy, BDC i tym podobne.

MOSS: Przykład funkcjonalnych – typ danych niestandardowe

Scenariusza biznesowego:

Realizacji całego przedsiębiorstwa MOSS dla produkcji firmy z 30+ miejsc i kilka kilkanaście działów firmy.

Celem firmy:

Pomimo wielu grup biznesowych (działy, lokalizacje, itp), Niektóre dane powinny zostać utrzymane na poziomie światowym. Na przykład, autorytatywne główny wykaz wszystkich fizycznej lokalizacji firmy (np.. zakłady produkcyjne, lokalizacji magazynowych, biura sprzedaży) powinny zostać utrzymane w spokojnej.

Problem techniczny:

Taksonomia przedsiębiorstwa został wdrożony przy użyciu wielu zbiorów witryn. Chcielibyśmy stworzyć listy autorytatywny fizycznej lokalizacji w pewien zwyczaj lista WSS. Następnie, Kiedy musieliśmy się kolumna typ zawartości (lub kolumna dodawane do biblioteki listy lub doc) że zawarte atrakcje dla turystów, tworzymy z kolumna przy użyciu wyszukiwania"" Typ danych i wskaż ten główny wykaz.

Niestety, typy danych wyszukiwania musi uzyskać dostęp do listy źródła "lokalnie" co oznacza, że naszą listę autorytatywnych nie może obejmować zbiory witryn.

Rozwiązanie techniczne:

Wdrożenie nowego typu danych niestandardowych realizowane na podstawie SPField i reprezentowane jako DropDownList w interfejsie użytkownika, którego listą pozycji wypełnić z głównej listy WSS.

Stworzyliśmy nową kolekcję witrynę o nazwie "http://localhost/EnterpriseData". Tam, stworzyliśmy listę niestandardową o nazwie "Atrakcje dla turystów". Ta lista tylko używa standardowych tytułu"" pole zawiera wykaz rzeczywistej lokalizacji firmy.

Jeden wynika kilka dyskretnych kroków, aby utworzyć typ danych niestandardowych w WSS. Są one:

  1. Definiowanie klasy, która dziedziczy z SPField (jeden może dziedziczyć z innych dziedzin, w razie potrzeby).

Oto kod do tego:

publiczne Klasa XYZZYCorporateLocationField : SPFieldText
{
publiczne XYZZYCorporateLocationField
(SPFieldCollection pola, ciąg atrybut typeName, ciąg displayName)
: podstawy(pola, atrybut typeName, displayName) { }

publiczne XYZZYCorporateLocationField
(SPFieldCollection pola, ciąg displayName)
: podstawy(pola, displayName) { }

publiczne zastępowanie BaseFieldControl FieldRenderingControl
{
Pobierz
{
BaseFieldControl Sterowanie = Nowy XYZZYCorporateLocationFieldControl();
kontroli. Nazwa_pola = to.InternalName;
Powrót kontrola;
} //Pobierz
} // fieldrenderingcontrol

publiczne zastępowanie ciąg GetValidatedString(obiekt wartość)
{
Jeśli (to.Wymagane || wartość. ToString().Równa się(Ciąg.Pusty))
{
rzut Nowy SPFieldValidationException ("Nie przypisano w departamencie.");
}
Powrót podstawy.GetValidatedString(wartość);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Określenie innej klasy, która dziedziczy pola podstawy kontroli, jak w:

publiczne Klasa XYZZYCorporateLocationFieldControl : BaseFieldControl
{
chronione DropDownList XYZZYCorporateLocationSelector;

chronione zastępowanie ciąg DefaultTemplateName
{
Pobierz
{
Powrót "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

publiczne zastępowanie obiekt Wartość
{
Pobierz
{
EnsureChildControls();
Powrót to.XYZZYCorporateLocationSelector. SelectedValue;
} // Pobierz
zestaw
{
EnsureChildControls();
to.XYZZYCorporateLocationSelector.SelectedValue = (ciąg)to.ItemFieldValue;
} // zestaw
} // zastąpić obiekt wartość

chronione zastępowanie nieważne CreateChildControls()
{

Jeśli (to.Dziedzinie == pusty || to.ControlMode == SPControlMode.Wyświetlacz)
Powrót;

podstawy.CreateChildControls();

to.XYZZYCorporateLocationSelector =
(DropDownList)FindControl TemplateContainer ustawiony.("XYZZYCorporateLocationSelector");

Jeśli (to.XYZZYCorporateLocationSelector == pusty)
rzut Nowy Wyjątek("BŁĄD: Nie można załadować. Pliku ASCX!");

Jeśli (!to.IsPostBack strony.)
{

przy użyciu (SPSite Strona = Nowy SPSite("http://localhost/enterprisedata"))
{
przy użyciu (Sieci Web programu SharePoint Web = site. OpenWeb())
{

SPList currentList = www. Wyświetla listę["Atrakcje dla turystów"];

foreach (SPItem XYZZYCorporateLocation w currentList.Items)
{
Jeśli (XYZZYCorporateLocation["Tytuł"] == pusty) w dalszym ciągu;

ciąg theTitle;
theTitle = XYZZYCorporateLocation["Tytuł"].ToString();

to.XYZZYCorporateLocationSelector.Items.Add
(Nowy ListItem(theTitle, theTitle));

} // foreach

} // za pomocą spweb web = site.openweb()
} // za pomocą Strona spsite = new spsite("http://localhost/enterprisedata")

} // Jeśli nie postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Powyższy kod w zasadzie implementuje logiki dla wypełniania DropDownList wartościami z listy niestandardowe WSS, znajdujące się w http://localhost/enterprisedata i o nazwie "korporacyjnych działów".

Ja zdefiniowane w obu klasach w .cs pojedynczego pliku, Skompilowałem go i umieścić go w pamięci podręcznej GAC (silne wymagane, Oczywiście).

  1. Wdrożenie szablonu kontroli (.ascx) jak pokazano:

<%@ Kontroli Język= "C#" Dziedziczy="Microsoft.SharePoint.Portal.serveradmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Wersja = 12.0.0.0, Culture = neutral,TokenKluczaPublicznego zespołu = 71e9bce111e9429c" compilationMode= "Zawsze" %>
<%
@ Rejestr TagPrefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" Montaż="Microsoft.SharePoint, Wersja = 12.0.0.0, Kultura = neutral, TokenKluczaPublicznego zespołu = 71e9bce111e9429c" %> <%@ Rejestr TagPrefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Montaż="Microsoft.SharePoint, Wersja = 12.0.0.0, Kultura = neutral, TokenKluczaPublicznego zespołu = 71e9bce111e9429c" %>
<SharePoint:Wartość parametru RenderingTemplate IDENTYFIKATOR= "XYZZYCorporateLocationFieldControl" RUNAT= "serwer">
<Szablon>
<ASP:DropDownList IDENTYFIKATOR= "XYZZYCorporateLocationSelector" RUNAT= "serwer" />
</Szablon>
</
SharePoint:Wartość parametru RenderingTemplate>

Powyższe jest zapisany w c:\Program filescommon filesmicrosoft sharedweb server extensions12controltemplates.

  1. Wreszcie, Tworzymy plik XML, aby zapisać do... 12XML katalogu. To jest CAML, który definiuje nasz typ danych niestandardowych i mój np., wygląda to tak:

<?XML Wersja="1.0" kodowanie="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Pole Nazwa="Atrybut TypeName">CorporateLocations</Pole>
<
Pole Nazwa="Typu elementu nadrzędnego">Tekst</Pole>
<
Pole Nazwa="TypeDisplayName">Atrakcje dla turystów</Pole>
<
Pole Nazwa="TypeShortDescription">Wszystkie firmy XYZZY miejsc, w tym produkcji lub innych urządzeń.</Pole>
<
Pole Nazwa="UserCreatable">PRAWDZIWE</Pole>
<
Pole Nazwa="ShowInListCreate">PRAWDZIWE</Pole>
<
Pole Nazwa="ShowInDocumentLibraryCreate">PRAWDZIWE</Pole>
<
Pole Nazwa="ShowInSurveyCreate">PRAWDZIWE</Pole>
<
Pole Nazwa="ShowInColumnTemplateCreate">PRAWDZIWE</Pole>
<
Pole Nazwa="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Wersja = 1.0.0.0, Kultura = neutral, PublicKeyToken = b0b19e85410990c4</Pole>
<
RenderPattern Nazwa="DisplayPattern">
<
Przełącznik>
<
Wyrażenie>
<
Kolumna />
</
Wyrażenie>

<Sprawa Wartość=""/>

<Domyślnie>
<
HTML>
<![CDATA[
<span style = "color:Czerwony"><b>]]>
</
HTML>

<
Kolumna SubColumnNumber="0" HTMLEncode="PRAWDZIWE"/>

<HTML><![CDATA[</b></zakres>]]></HTML>

</
Domyślnie>
</
Przełącznik>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Ten plik XML dodaje typ danych niestandardowych do WSS "biblioteka" i odpowiada to GAC miał montaż.

Po przeniesieniu wszystkich tych bitów na miejsce, polecenie iisreset na serwerze i należy wszystkie zaczynają działa ładnie.

MOSS: Aktualizacja listy niestandardowej

Istnieje wiele dobrych przykładów aktualizacji list niestandardowych za pomocą zestawu SDK. Oto kolejny.

Problem w biznesie: Formularz programu InfoPath został zaprojektowany, że umożliwia użytkownikom wprowadzanie online zapotrzebowania na zakup. PO rekwizycji, że numery powinny być tradycyjne sekwencji na bazie wartości całkowitych i obliczane automatycznie.

Rozwiązanie dla firm: Utworzyć niestandardową listę MOSS zawierającej dwie kolumny: "ControlField" i "ControlValue". Wartość kolumna zawiera numer kolejny zapotrzebowania zakupu. Należy pamiętać, że nazwę rodzajową "kontrola" Konwencja nazewnictwa przewiduje przyszłość kontroli pola, które mogą być stosowane w razie potrzeby.

Rozwiązanie techniczne: Tworzenie usługa sieci web dostęp do klienta programu InfoPath. Usługa sieci web zwraca następny numer zapotrzebowania zakupu i aktualizuje wartości listy.

Wyciągnięte wnioski:

  • Podczas dodawania tej usługi sieci web jako źródło danych do formularza programu InfoPath, I stwierdziła, że trzeba go przerobic udc i przechowywać go w bibliotece połączeń danych.
  • Również znaleźć niezbędne do umożliwienia granic domen skryptów za pomocą administracji centralnej usługi // Zarządzanie aplikacjami // Konfiguracja serwera w postaci.
  • Po raz pierwszy formie próbował uzyskać dostęp do usługa sieci web, to zajmuje trochę czasu, a przy okazji, to czas. Bawił się z ustawienia w formularzu konfiguracja serwera, aby rozwiń ustawienia limitu czasu i wydawało się pomóc.

Kod:

przy użyciu Systemu;
przy użyciu System.Web;
przy użyciu System.Web.Services;
przy użyciu System.Web.Services.Protocols;
przy użyciu Microsoft.SharePoint;
przy użyciu System.Configuration;

[Usługi WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
publiczne Klasa PoService : System.Web.Services.Usługi WebService
{
publiczne PoService () {

//Usuń oznaczenie komentarza że następujący wiersz, jeśli za pomocą zaprojektowane komponenty
//InitializeComponent();
}

/// <Podsumowanie>
/// Uzyskać następny numer zamówienia z listy programu sharepoint po numer kontroli.
/// Zwiększajšć liczbę PO tej liście.
/// </Podsumowanie>
/// <zwraca></zwraca>
[WebMethod]
publiczne ciąg GetNextPoNumber()
{
ciąg SpPoControlSiteName; // Nazwa rzeczywistej witryny MOSS, obsługującego listę PO kontroli.
ciąg SpPoControlListName; // Nazwa aktualnej liście mech zawierające Po kontroli.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

ciąg nextPoReqNumber = "xyzzy";

przy użyciu (SPSite Strona = Nowy SPSite(SpPoControlSiteName))
{
przy użyciu (Sieci Web programu SharePoint Web = site. OpenWeb())
{

SPList currentList = www. Wyświetla listę[SpPoControlListName];

foreach (SPItem controlItem w currentList.Items)
{

Jeśli (((ciąg)controlItem["ControlField"]).Równa się("NextPoNumber"))
{
nextPoReqNumber = (ciąg)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Konwersja.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Lokalizowanie, czytanie i aktualizowania PO numer z listy.


} // za pomocą spweb web = site.openweb()
} // za pomocą Strona spsite = new spsite("http://localhost/mizuho")

Powrót nextPoReqNumber;

}
}