Månedligt arkiv: August 2007

MOSS avanceret tilpasning af Søg — Sagen betyder noget i avanceret søgning XSLT

Jeg ændre ikke avanceret søgning XSLT meget ofte, så det ser ud som jeg klatring små bakker hver gang.

Min nyeste lektion er dette: Sagen om når refererer til en kolonne. I min avanceret søgning, Jeg har kolonner defineres som dette:

<roden xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance">
<
Kolonner>
<
Kolonne Navn="GafTrainingInvoiceNumber" />
<
Kolonne Navn="GafTrainingInvoiceLocation" />
<
Kolonne Navn="Arbejds-id'et"/>
<
Kolonne Navn="Rang"/>
<
Kolonne Navn="Titel"/>
<
Kolonne Navn="Forfatter"/>
<
Kolonne Navn="Størrelse"/>
<
Kolonne Navn="Sti"/>
<
Kolonne Navn="Beskrivelse"/>
<
Kolonne Navn="Skrive"/>
<
Kolonne Navn="SiteName"/>
<
Kolonne Navn="CollapsingStatus"/>
<
Kolonne Navn="HitHighlightedSummary"/>
<
Kolonne Navn="HitHighlightedProperties"/>
<
Kolonne Navn="ContentClass"/>
<
Kolonne Navn="IsDocument"/>
<
Kolonne Navn="PictureThumbnailURL"/>
</
Kolonner>
</
roden>

Den XSLT, der viser faktura nummer og faktura placeringen havde været:

<p>
Uddannelse fakturanummer: <XSL:værdi af Vælg="GafTrainingInvoiceNumber"/>
<
br></br>
Uddannelse faktura placering: <XSL:værdi af Vælg="GafTrainingInvoiceLocation"/>
</
p>

Dog, Vælg har referere til egenskaben i alle små bogstaver, som i:

<p>
Uddannelse fakturanummer: <XSL:værdi af Vælg="gaftraininginvoicenumber"/>
<
br></br>
Uddannelse faktura placering: <XSL:værdi af Vælg="gaftraininginvoicelocation"/>
</
p>


Indtil jeg korrigeret, Søg blandt resultater viste etiketter (dvs. "Uddannelse fakturanummer") men ingen data.

MOSS: Funktionsdygtige eksempel – brugerdefineret datatype

Forretningsscenario:

Enterprise-wide gennemførelsen af mos for produktionsvirksomhed med 30+ websteder og et par dusin corporate afdelinger.

Business mål:

Trods et væld af erhvervslivet grupper (afdelinger, Steder, osv), visse data bør bevares på globalt plan. For eksempel, en autoritativ master liste over alle fysiske placeringer af virksomheden (strømsparetilstand. produktionsfaciliteter, lagerlokationer, salgskontorer) bør fastholdes i en central beliggenhed.

Teknisk Problem:

Enterprise taksonomien blev gennemført ved hjælp af flere grupper af websteder. Vi ville gerne oprette den autoritative liste over fysiske lokationer i en brugerdefineret WSS liste. Derefter, Når vi skulle have en kolonne i en indholdstype (eller en kolonne føjes til en liste eller doc bibliotek) der indeholdt corporate steder, Vi ville skabe en kolonne ved hjælp af "opslag" datatype og pege på denne hovedliste.

Desværre, opslag datatyper skal have adgang til en kildeliste "lokalt" hvilket betyder at vores autoritative liste ikke kan span websteder.

Tekniske løsning:

Implementer en ny brugerdefineret datatype implementeret baseret på SPField og repræsenteret som en DropDownList i UI hvis ListItems udfylde WSS-listen master.

Vi skabt en ny gruppe af websteder kaldes "http://localhost/EnterpriseData". Der, Vi har oprettet en brugerdefineret liste navngivne "Corporate placeringer". Denne liste bruger bare den standard "titel" Feltet indeholder en liste over faktiske corporate placeringer.

Man følger flere diskrete trin for at oprette en brugerdefineret datatype i WSS. De er:

  1. Definere en klasse som nedarver fra SPField (man kan arve fra andre områder, hvis det kræves).

Her er koden for at:

offentlige klasse XYZZYCorporateLocationField : SPFieldText
{
offentlige XYZZYCorporateLocationField
(Af SPFieldCollection felter, streng typeName, streng displayName)
: Base(felter, typeName, displayName) { }

offentlige XYZZYCorporateLocationField
(Af SPFieldCollection felter, streng displayName)
: Base(felter, displayName) { }

offentlige tilsidesætte BaseFieldControl FieldRenderingControl
{

{
BaseFieldControl kontrol = nye XYZZYCorporateLocationFieldControl();
kontrol. FieldName = Dette.InternalName;
tilbagevenden kontrol;
} //få
} // fieldrenderingcontrol

offentlige tilsidesætte streng GetValidatedString(objekt værdi)
{
Hvis (Dette.Kræves || værdi. ToString().Er lig med(Streng.Tom))
{
kaste nye SPFieldValidationException ("Afdeling er ikke tildelt.");
}
tilbagevenden Base.GetValidatedString(værdi);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Definere en anden klasse, der nedarver fra kontrolelementet Grundfelt, som i:

offentlige klasse XYZZYCorporateLocationFieldControl : BaseFieldControl
{
beskyttet DropDownList XYZZYCorporateLocationSelector;

beskyttet tilsidesætte streng DefaultTemplateName
{

{
tilbagevenden "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

offentlige tilsidesætte objekt Værdi
{

{
EnsureChildControls();
tilbagevenden Dette.XYZZYCorporateLocationSelector. SelectedValue;
} // få
sæt
{
EnsureChildControls();
Dette.XYZZYCorporateLocationSelector.SelectedValue = (streng)Dette.ItemFieldValue;
} // sæt
} // tilsidesætte objekt værdi

beskyttet tilsidesætte void CreateChildControls()
{

Hvis (Dette.Feltet == Null || Dette.ControlMode == SPControlMode.Display)
tilbagevenden;

Base.CreateChildControls();

Dette.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer. FindControl("XYZZYCorporateLocationSelector");

Hvis (Dette.XYZZYCorporateLocationSelector == Null)
kaste nye Undtagelse("FEJL: Kan ikke indlæse. ASCX fil!");

Hvis (!Dette.IsPostBack side.)
{

ved hjælp af (SPSite site = nye SPSite("http://localhost/enterprisedata"))
{
ved hjælp af (SPWeb Web = site. OpenWeb())
{

SPList.Update() currentList = web. Lister["Corporate steder"];

foreach (SPItem XYZZYCorporateLocation i currentList.Items)
{
Hvis (XYZZYCorporateLocation["Titel"] == Null) «««;

streng theTitle;
theTitle = XYZZYCorporateLocation["Titel"].ToString();

Dette.XYZZYCorporateLocationSelector.Items.Add
(nye ListItem(theTitle, theTitle));

} // foreach

} // ved hjælp af spweb web = site.openweb()
} // ved hjælp af spsite site = ny spsite("http://localhost/enterprisedata")

} // Hvis ikke en tilbagesendelse

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Ovenstående kode dybest set implementerer logik til udfyldning af DropDownList med værdier fra den WSS brugerdefinerede liste findes på http://localhost/enterprisedata og navngivet "Corporate afdelinger".

Jeg defineret begge klasser i en enkelt .cs fil, kompileret det og sætte det ind i GAC (stærk kræves, Selvfølgelig).

  1. Gennemføre en kontrol skabelon (.ascx) som vist:

<%@ Kontrol Sprog= "C#" Arver="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Version = 12.0.0.0, kultur = neutral,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Altid" %>
<%
@ Registrer TagPrefix= "wssawc" Namespace="Microsoft.SharePoint.webControls" Forsamling="Microsoft.SharePoint, Version = 12.0.0.0, Kultur = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Registrer TagPrefix= "SharePoint" Namespace="Microsoft.SharePoint.webControls" Forsamling="Microsoft.SharePoint, Version = 12.0.0.0, Kultur = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID= "XYZZYCorporateLocationFieldControl" RUNAT= "server">
<Skabelon>
<ASP:DropDownList ID= "XYZZYCorporateLocationSelector" RUNAT= "serveren" />
</Skabelon>
</
SharePoint:RenderingTemplate>

Ovenstående er gemt i c:\programmet fælles filer filesmicrosoft sharedweb server extensions12controltemplates.

  1. Endelig, vi oprette en XML-fil til at gemme i det... 12XML Register. Dette er CAML, der definerer vores brugerdefineret datatype og for mit eksempel, ser sådan ud:

<?XML version="1.0" kodning="UTF-8" ?>
<
Felttyper>
<
FieldType>
<
Felt Navn="TypeName">CorporateLocations</Felt>
<
Felt Navn="Felttypen">Tekst</Felt>
<
Felt Navn="TypeDisplayName">Corporate steder</Felt>
<
Felt Navn="TypeShortDescription">Alle XYZZY Corporate steder herunder fremstillings- eller andre faciliteter.</Felt>
<
Felt Navn="UserCreatable">SANDT</Felt>
<
Felt Navn="ShowInListCreate">SANDT</Felt>
<
Felt Navn="ShowInDocumentLibraryCreate">SANDT</Felt>
<
Felt Navn="ShowInSurveyCreate">SANDT</Felt>
<
Felt Navn="ShowInColumnTemplateCreate">SANDT</Felt>
<
Felt Navn="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = b0b19e85410990c4</Felt>
<
RenderPattern Navn="DisplayPattern">
<
Switch>
<
Udtryk>
<
Kolonne />
</
Udtryk>

<Sag Værdi=""/>

<Standard>
<
HTML>
<![CDATA[
<span style = "color:Rød"><b>]]>
</
HTML>

<
Kolonne SubColumnNumber="0" HTMLEncode="SANDT"/>

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

</
Standard>
</
Switch>

</
RenderPattern>
</
FieldType>
</
Felttyper>
Denne XML-fil, tilføjer den brugerdefinerede datatype til WSS "bibliotek" og passer det ind i GAC havde forsamling.

Når du har flyttet alle disse bits på plads, iisreset på serveren, og det bør alle start arbejder pænt.

WSS: Teknik til at skabe CAML felt definitioner.

Ekstra kategori: CAML

Her er en stor udstationering af en fyr ved navn "craig" på en teknik til at finde CAML definitioner for feltet indholdstyper baseret off rigtig levende definitioner fra et websted.

Hans udstationering siger det hele. I korte træk:

  1. Opret en indholdstype.
  2. Knytte det til en liste.
  3. Åbn listen med SharePoint Designer.
  4. Eksportere til en "Personlig webpakke".
  5. Omdøbe til en .cab.
  6. Uddrag manifestet.
  7. Find din indholdstype og tilknyttede CAML.

WSS: Sammenfattende trin for at aktivere nyttige funktioner/elementer/etc. IntelliSense i VS 2005

Yderligere kategorier: Visual Studio 2005

At aktivere nyttige intellisense til funktioner, elementer, etc i visual studio 2005:

  1. Adgang til en WSS server.
  2. Naviger til "c:\programmet fælles filer filesmicrosoft sharedweb server extensions12TEMPLATEXML"
  3. Lukke op en anden vinduer undersøge peger på: "C:\Programmet Microsoft Visual Studio 8XmlSchemas"
  4. Kopier følgende filer fra WSS-server til din VS 2005 skemaer Register:
    1. WSS.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Genstart VS 2005
  6. Tilføje en ny XML-fil til et projekt.
  7. Klik i kroppen af XML-filen.
  8. I ruden Egenskaber, Klik på "skemaer" og vælge "wss.xsd" fra valg. (Det er ikke nødvendigt at vælge andre xsd, da de er refereret fra wss.xsd).

IntelliSense er nu aktiveret for denne XML-dokument.

Se Her for mere information om dette emne og instruktioner om, hvordan du automatisk knytte WSS intellisense med alle XML-filer.

WSS eksamen 70-541, Microsoft Windows SharePoint Services 3.0 – Programudvikling

Jeg tog og bestået den ovennævnte test her til morgen. Jeg fandt eksamenen skal være vanskeligt og fair.

Der er en relativ mangel på information om denne eksamen på nettet. Jeg er ikke sikker på hvorfor.

Jeg ikke vil naturligvis få nogen detaljer om eksamen jeg tog, men jeg tror, jeg kan sikkert sige følgende::

  1. Stole på dette link: http://www.microsoft.com/learning/exams/70-541.mspx.

    Det viser, hvad du behøver at vide for at bestå eksamen og det er, IMO, meget præcis.

  2. Linket også anbefaler Inde i Microsoft Windows SharePoint Services 3.0 af Ted Pattison & Daniel Larson. Denne bog dækker næsten alle de emner, testen adresser. Jeg fandt det at være stor i sig selv ud over simple eksamen prep. Det giver gode eksempler og virkelig fik mig tænker om nogle nye og interessante ting at prøve. Hvis du vil springe et par stumper i bogen, bare krydshenvisning bogens indholdsfortegnelse med elementer i linket fra ovenfor.
  3. Intet slår faktiske hands-on erfaring. Hvis du har tid og interesse, følge med eksempler i bogen og derefter eksperimentere med dem. Du vil have en lettere gang på eksamen samt virkelig lære WSS ansøgning programmering.

</slutningen>Abonner på min blog!

MOSS / InfoPath Forms Server (InfoPath 2007) rullelisten ydeevne

Ekstra kategori: InfoPath

Resumé: En InfoPath 2007 form indsat til en server, MOSS giver en drop-down listen af leverandører er bundet til en brugerdefineret liste, der mos. Ved valg af leverandør, regler tildeler feltværdier til en håndfuld tekstfelter som salgsrep navn, adresse, City, staten, zip og telefon. Performance er forfærdeligt. Vi bemærker, at ydeevnen bliver værre (i en ikke-lineær mode) for hver yderligere felt opdatere vi denne måde. Dvs., Hvis vi bare opdatere navnet salg rep, det tager [x] mængden af tid. Hvis vi opdatere salg rep, Address1, Adresse2, City, staten, zip, det tager 10 gange længere.

Løsning: Skrive en webservice (eksempelkode kan findes Her) der er gået i en kreditor og det returnerer tilbage kreditor detaljer. Derefter, knytte felterne på denne måde. Selv om dette også virker langsom, der var ingen mærkbar forskel i ydelse, når vi tildelt 1 feltet versus 8 felter. Som en ekstra bonus, brugere får en cool "kontakter serveren" Cylon effekt, mens de venter på formen at påberåbe sig og forbruge service resultater.

MOSS: Der opstod en undtagelse. (Undtagelse fra HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

OPDATERING: Vi fastslået aldrig årsag til dette problem, og det aldrig overflade igen.

Vi bemærker under gennemførelsen af et udvikling websted så pludselig, to brugere kan ikke få adgang en webstedssamling. Disse konti kan godkende til det vigtigste websted, Men når du forsøger at få adgang til en bestemt gruppe af websteder, de får bare en blank skærm. Nogen fejl, vises, bare en hvid tom side.

Vi log på som et websted samling admin og forsøge at tilføje en af disse brugere som et websted admin og denne gang, ved at trykke på "OK", Vi får denne meddelelse:

Der opstod en undtagelse. (Undtagelse fra HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Vi brugt tid på at forske dette og desværre, ikke komme med noget nyttigt. Der var nogle meddelelser i den diagnosticeringslogfil, men det var svært at nøjagtigt korrelere dem med dette problem.

I sidste ende, Vi gruppen af websteder slettes og genoprettes og at løst det.

Hvis jeg regne ud, skyldes hvad dette i fremtiden, Jeg opdaterer denne post.