miesięczne archiwum: Sierpnia 2007

MOSS Zaawansowane dostosowywanie wyszukiwania — Przypadku znaczenia w wyszukiwaniu zaawansowanym XSLT

Bardzo często nie zmodyfikować zaawansowane wyszukiwanie XSLT, Tak więc wydaje się, że wspinaczka pagórki za każdym razem.

To jest mój najnowszy lekcja: Przypadku sprawy przy odwoływaniu się do kolumna. W moje wyszukiwanie zaawansowane, Mam kolumny zdefiniowane jako to:

<główny xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
Kolumny>
<
Kolumna Nazwa="GafTrainingInvoiceNumber" />
<
Kolumna Nazwa="GafTrainingInvoiceLocation" />
<
Kolumna Nazwa="Identyfikator pracy"/>
<
Kolumna Nazwa="Ranga"/>
<
Kolumna Nazwa="Tytuł"/>
<
Kolumna Nazwa="Autor"/>
<
Kolumna Nazwa="Rozmiar"/>
<
Kolumna Nazwa="Ścieżka"/>
<
Kolumna Nazwa="Opis"/>
<
Kolumna Nazwa="Zapis"/>
<
Kolumna Nazwa="Nazwa_witryny"/>
<
Kolumna Nazwa="CollapsingStatus"/>
<
Kolumna Nazwa="HitHighlightedSummary"/>
<
Kolumna Nazwa="HitHighlightedProperties"/>
<
Kolumna Nazwa="ContentClass"/>
<
Kolumna Nazwa="IsDocument"/>
<
Kolumna Nazwa="PictureThumbnailURL"/>
</
Kolumny>
</
główny>

Były XLST, wyświetla położenie numer i faktura faktury:

<p>
Numer faktury szkolenia: <XSL:wartość z Wybierz="GafTrainingInvoiceNumber"/>
<
BR></BR>
Lokalizacja szkoleń faktury: <XSL:wartość z Wybierz="GafTrainingInvoiceLocation"/>
</
p>

Jednakże, Wybierz musi odwołać właściwość w wszystkie małe litery, jak w:

<p>
Numer faktury szkolenia: <XSL:wartość z Wybierz="gaftraininginvoicenumber"/>
<
BR></BR>
Lokalizacja szkoleń faktury: <XSL:wartość z Wybierz="gaftraininginvoicelocation"/>
</
p>


Do momentu że poprawione, Wyniki wyszukiwania pokazał etykiety (tj.. "Szkolenia numer faktury") ale nie ma danych.

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.

WSS: Technika tworzenia definicji pola CAML.

Dodatkową kategorię: CAML

Tutaj jest to wielki delegowania przez kolegów o nazwie "craig" na technikę znalezienie CAML definicje typów zawartości pola poza prawdziwym żyć definicje z witryny.

Jego komentarz mówi wszystko. W skrócie:

  1. Utworzyć typ zawartości.
  2. Skojarzyć go z listy.
  3. Otwarcie listy z programu SharePoint Designer.
  4. Eksport do pakietu"personal web".
  5. Zmień nazwę do cab.
  6. Wyciąg manifest.
  7. Typ zawartości i skojarzone CAML.

WSS: Podsumowanie kroki umożliwiające przydatne funkcje/elementy/itp. Technologia IntelliSense w VS 2005

Dodatkowe kategorie: Program Visual Studio 2005

Umożliwiające intellisense przydatnych funkcji, elementy, itp w visual studio 2005:

  1. Dostęp do serwera WSS.
  2. Przejdź do "c:\Program filescommon filesmicrosoft sharedweb server extensions12TEMPLATEXML"
  3. Otwórz inny windows Badacz, wskazując na: "C:\Program FilesMicrosoft Visual Studio 8XmlSchemas"
  4. Skopiuj następujące pliki z serwera WSS do swojej VS 2005 Katalog schematów:
    1. WSS.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Ponownie VS 2005
  6. Dodaj nowy plik XML do projektu.
  7. Kliknij w treści pliku XML.
  8. W okienku właściwości, Kliknij na "schematów" i wybrać "wss.xsd" z wyborów. (Nie jest konieczne wybrać inne xsd, ponieważ są one wywoływane z wss.xsd).

Technologia IntelliSense jest obecnie włączone dla tego dokumentu XML.

Zobacz tutaj Aby uzyskać więcej informacji na ten temat i instrukcje w jaki sposób automatycznie kojarzy WSS intellisense z dowolnego pliku XML.

Egzamin WSS 70-541, Program Microsoft Windows SharePoint Services 3.0 – Opracowywanie aplikacji

Wziął i przeszedł wyżej wymienione badania rano. Znalazłem egzamin za trudną i targi.

Tam jest względna niedostatku informacji na ten egzamin w Internecie. Nie jestem pewien, dlaczego.

Oczywiście przyzwyczajenie się do żadnych szczegółów na temat egzaminu, wziąłem, ale myślę, że śmiało można powiedzieć następujące:

  1. Wielka aglomeracja przedsiębiorstw ten link: http://www.microsoft.com/learning/exams/70-541.mspx.

    Wymienia się w nim to, co trzeba wiedzieć, aby zdać egzamin i to, IMO, bardzo dokładne.

  2. Zaleca się również link Wewnątrz programu Microsoft Windows SharePoint Services 3.0 przez Ted Pattison & Daniel Larson. Książka ta obejmuje prawie wszystkie tematy, które rozwiązuje test. I okazało się być wielkim w sobie poza prosty egzamin prep. Przykłady wielkich i naprawdę mi do myślenia o kilka nowych i ciekawych rzeczy do wypróbowania. Jeśli chcesz pominąć kilka bitów w książce, po prostu odsyłacz spis treści książki z elementów z powyższy link.
  3. Nic nie przebije rzeczywiste doświadczenia praktyczne. Jeśli masz czas i zainteresowanie, Postępuj zgodnie z przykłady w tej książce i następnie eksperymentować z nimi. Można będzie łatwiej na egzaminie jak również naprawdę nauczyć się programowania aplikacji WSS.

</koniec>Subskrybowanie mój blog!

MOSS / Program InfoPath Forms Server (Program InfoPath 2007) Lista rozwijana wydajności

Dodatkową kategorię: Program InfoPath

Podsumowanie: Programu InfoPath 2007 formularza wdrożony na serwerze MOSS zawiera listę rozwijaną dostawców powiązana z listy niestandardowej MOSS. Po zaznaczeniu dostawcy, zasady przypisać wartości pola garstkę pola tekstowe, takie jak nazwa handlowy, adres, miasto, Państwo, zip i telefonu. Wydajność jest okropne. Zauważamy, że wydajność gets worse (w sposób liniowy) dla każdego pola dodatkowe aktualizowania w ten sposób. Tj, Jeśli mamy tylko zaktualizować nazwy handlowy, Trwa [x] czas. Jeśli musimy zaktualizować handlowy, Adres1, Adres2, miasto, Państwo, pocztowy, Trwa 10 razy dłużej.

Roztwór: Napisz usługi sieci web (Przykładowy kod można znaleźć tutaj) który jest przekazywany w imieniu dostawcy i ponownie zwraca dane dostawcy. Następnie, przypisać pola w ten sposób. Chociaż zbyt wydaje się wolno, nie było wyraźnej różnicy w wydajności możemy przypisany 1 pole kontra 8 pola. Dodatkowym atutem, użytkownicy otrzymują cool "kontaktowania się z serwerem" Kochał powstaje efekt, podczas gdy oni czekać na formularz, aby wywołać i zajmują usługi.

MOSS: Wystąpił wyjątek. (Wyjątek od HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

AKTUALIZACJA: Możemy nigdy ponownie określić główną przyczynę tego problemu oraz że nigdy nie powierzchni.

Zauważamy podczas wdrażania witryny rozwoju, że nagle, dwaj użytkownicy nie są w stanie uzyskać dostęp do zbioru witryn. Rachunki te mogą uwierzytelniać do strony głównej, Jednak przy próbie dostępu do konkretnej kolekcji witryn, one dostać pusty ekran. Nie błędów wyświetlane, biały pustej strony.

Możemy zalogować się jako administrator zbioru witryn i spróbować dodać jeden z tych użytkowników jako administratora witryny i tym razem, po naciśnięciu "OK", otrzymujemy tej wiadomości:

Wystąpił wyjątek. (Wyjątek od HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Spędziliśmy trochę czasu, to badania i Niestety, nie nadejdzie z czymkolwiek przydatne. Istniały pewne wiadomości w Dzienniku diagnostyczne, ale było trudno dokładnie skorelować je z tego problemu.

W końcu, możemy usunie zbiór witryn i ponownie utworzony i że rozwiązać.

Jeśli mogę wymyślić co spowodowało to w przyszłości, Zaktualizuję na stanowisku tym.