maandelijkse archieven: Augustus 2007

MOSS Geavanceerd zoeken aanpassen — Geval toe doet in Geavanceerd zoeken XSLT

Ik wijzigen Geavanceerd zoeken XSLT heel vaak niet, zodat het lijkt alsof ik ben klein heuvels telkens klimmen.

Mijn nieuwste les is dit: Geval van belang wanneer wordt verwezen naar een kolom. In mijn Geavanceerd zoeken, Ik heb kolommen gedefinieerd als dit:

<wortel xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance">
<
Kolommen>
<
Kolom Naam="GafTrainingInvoiceNumber" />
<
Kolom Naam="GafTrainingInvoiceLocation" />
<
Kolom Naam="WorkId"/>
<
Kolom Naam="Rang"/>
<
Kolom Naam="Titel"/>
<
Kolom Naam="Auteur"/>
<
Kolom Naam="Grootte"/>
<
Kolom Naam="Pad"/>
<
Kolom Naam="Beschrijving"/>
<
Kolom Naam="Schrijven"/>
<
Kolom Naam="SiteName"/>
<
Kolom Naam="CollapsingStatus"/>
<
Kolom Naam="HitHighlightedSummary"/>
<
Kolom Naam="HitHighlightedProperties"/>
<
Kolom Naam="ContentClass"/>
<
Kolom Naam="IsDocument"/>
<
Kolom Naam="PictureThumbnailURL"/>
</
Kolommen>
</
wortel>

De XSLT die wordt weergegeven de locatie van de factuur nummer en factuur geweest:

<p>
Opleiding factuurnummer: <XSL:waarde-van Selecteer="GafTrainingInvoiceNumber"/>
<
BR></BR>
Opleiding factuur locatie: <XSL:waarde-van Selecteer="GafTrainingInvoiceLocation"/>
</
p>

Echter, het selecteren heeft om te verwijzen naar de eigenschap in alle kleine letters, Als in:

<p>
Opleiding factuurnummer: <XSL:waarde-van Selecteer="gaftraininginvoicenumber"/>
<
BR></BR>
Opleiding factuur locatie: <XSL:waarde-van Selecteer="gaftraininginvoicelocation"/>
</
p>


Totdat ik gecorrigeerd die, Zoekresultaten toonden de etiketten (dwz. "Opleiding factuurnummer") maar geen gegevens.

MOSS: Functioneel voorbeeld – aangepast gegevenstype

Bedrijfsscenario:

Ondernemingswijde uitvoering van MOSS voor productiebedrijf met 30+ sites en een paar dozijn stafafdelingen.

Zakelijke doel:

Ondanks een veelheid van business groups (afdelingen, locaties, etc), bepaalde gegevens moeten worden gehandhaafd op een mondiaal niveau. Bijvoorbeeld, een gezaghebbende hoofdlijst van alle fysieke locaties van het bedrijf (bijvoorbeeld. productiefaciliteiten, magazijn locaties, verkoopkantoren) moet worden gehandhaafd op een centrale locatie.

Technisch probleem:

De taxonomie van de onderneming werd uitgevoerd met behulp van meerdere siteverzamelingen. Wij hadden gewild de gezaghebbende lijst van fysieke locaties maken in een aangepaste WSS-lijst. Vervolgens, Wanneer we die nodig is om een kolom in een inhoudstype (of een kolom toegevoegd aan een lijst of doc bibliotheek) die opgenomen corporate locaties, We zouden een kolom met behulp van de "lookup maken" datatype en punt aan dit master lijst.

Helaas, opzoeken datatypes moet toegang hebben tot een bronlijst 'lokaal" Wat betekent dat onze gezaghebbende lijst niet meerdere siteverzamelingen kunnen omvatten.

Technische oplossing:

Uitvoering van een nieuwe aangepaste gegevenstype ten uitvoer gelegd op basis van SPField en vertegenwoordigd als een DropDownList in de UI waarvan ListItems vanuit de hoofdlijst WSS vullen.

We hebben een nieuwe siteverzameling genoemd gemaakt "http://localhost/EnterpriseData". Er, we gemaakt een aangepaste lijst met de naam 'Corporate locaties'. Deze lijst gebruikt enkel de standaard "titel" veld bevatten de lijst van werkelijke corporate locaties.

Een volgt verschillende discrete stappen voor het maken van een aangepast gegevenstype in WSS. Ze zijn:

  1. Een klasse die van SPField overerft definiëren (Men kan erven van andere velden indien nodig).

Hier is de code voor dat:

openbare klasse XYZZYCorporateLocationField : SPFieldText
{
openbare XYZZYCorporateLocationField
(SPFieldCollection velden, tekenreeks typeName, tekenreeks displayName)
: Base(velden, typeName, displayName) { }

openbare XYZZYCorporateLocationField
(SPFieldCollection velden, tekenreeks displayName)
: Base(velden, displayName) { }

openbare overschrijven BaseFieldControl FieldRenderingControl
{
Toevoegen
{
BaseFieldControl controle = Nieuw XYZZYCorporateLocationFieldControl();
controle. FieldName = Dit.InternalName;
terugkeer controle;
} //Toevoegen
} // fieldrenderingcontrol

openbare overschrijven tekenreeks GetValidatedString(object waarde)
{
Als (Dit.Vereist || waarde. ToString().Is gelijk aan(Tekenreeks.Leeg))
{
gooien Nieuw SPFieldValidationException ("Departement is niet toegewezen.");
}
terugkeer Base.GetValidatedString(waarde);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Een andere klasse die van het basisveld besturingselement overerft definiëren, Als in:

openbare klasse XYZZYCorporateLocationFieldControl : BaseFieldControl
{
beschermd DropDownList XYZZYCorporateLocationSelector;

beschermd overschrijven tekenreeks DefaultTemplateName
{
Toevoegen
{
terugkeer "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

openbare overschrijven object Waarde
{
Toevoegen
{
EnsureChildControls();
terugkeer Dit.XYZZYCorporateLocationSelector.SelectedValue;
} // Toevoegen
instellen
{
EnsureChildControls();
Dit.XYZZYCorporateLocationSelector.SelectedValue = (tekenreeks)Dit.ItemFieldValue;
} // instellen
} // object waarde overschrijven

beschermd overschrijven VOID CreateChildControls()
{

Als (Dit.Veld == Null || Dit.ControlMode == SPControlMode.Weergave)
terugkeer;

Base.CreateChildControls();

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

Als (Dit.XYZZYCorporateLocationSelector == Null)
gooien Nieuw Uitzondering("FOUT: Kan niet laden. ASCX bestand!");

Als (!Dit.IsPostBack de pagina.)
{

met behulp van (SPSite site = Nieuw SPSite('http://localhost/enterprisedata"))
{
met behulp van (SPWeb Web = site. OpenWeb())
{

SPList currentList = web. Lijsten['Corporate locaties"];

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

tekenreeks Krijgt;
Krijgt = XYZZYCorporateLocation["Titel"].ToString();

Dit.XYZZYCorporateLocationSelector.Items.Add
(Nieuw ListItem(Krijgt, Krijgt));

} // foreach

} // met behulp van spweb web = site.openweb()
} // gebruik van spsite site = nieuwe spsite('http://localhost/enterprisedata")

} // Als niet een terugsturen

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

De bovenstaande code implementeert in principe de logica voor het vullen van de DropDownList met waarden uit de WSS aangepaste lijst attractiepark http://localhost/enterprisedata en met de naam "Corporate afdelingen".

Ik heb beide klassen gedefinieerd in een enkele .cs-bestand, gecompileerd het en zet het in de GAC (sterke vereist, Natuurlijk).

  1. Uitvoering van een besturingselement sjabloon (.AScX) zoals:

<%@ Controle Taal= "C#" Erft="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Versie = 12.0.0.0, Culture = neutral,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Always" %>
<%
@ Registreren Tagprefix"wssawc =" Namespace="Microsoft.SharePoint.WebControls" Vergadering="Microsoft.SharePoint, Versie = 12.0.0.0, Cultuur = neutraal, PublicKeyToken = 71e9bce111e9429c" %> <%@ Registreren Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Vergadering="Microsoft.SharePoint, Versie = 12.0.0.0, Cultuur = neutraal, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID"XYZZYCorporateLocationFieldControl =" RUNAT= "server">
<Sjabloon>
<ASP:DropDownList ID"XYZZYCorporateLocationSelector =" RUNAT= "server" />
</Sjabloon>
</
SharePoint:RenderingTemplate>

Het bovenstaande wordt opgeslagen in c:\Program filescommon filesmicrosoft sharedweb server extensions12controltemplates.

  1. Tot slot, We creëren een XML-bestand op te slaan in de... 12XML directory. Dit is CAML waarin onze aangepaste gegevenstype en voor mijn voorbeeld, ziet er als volgt:

<?XML Versie="1.0" codering="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Veld Naam="TypeName">CorporateLocations</Veld>
<
Veld Naam="ParentType">Tekst</Veld>
<
Veld Naam="TypeDisplayName">Corporate locaties</Veld>
<
Veld Naam="TypeShortDescription">Alle Corporate XYZZY locaties met inbegrip van de productie- of andere voorzieningen.</Veld>
<
Veld Naam="UserCreatable">WAAR</Veld>
<
Veld Naam="ShowInListCreate">WAAR</Veld>
<
Veld Naam="ShowInDocumentLibraryCreate">WAAR</Veld>
<
Veld Naam="ShowInSurveyCreate">WAAR</Veld>
<
Veld Naam="ShowInColumnTemplateCreate">WAAR</Veld>
<
Veld Naam="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Versie = 1.0.0.0, Cultuur = neutraal, PublicKeyToken = b0b19e85410990c4</Veld>
<
RenderPattern Naam="DisplayPattern">
<
Schakelaar>
<
Expr>
<
Kolom />
</
Expr>

<Geval Waarde=""/>

<Standaard>
<
HTML>
<![CDATA[
<span stijl = "kleur:Red"><b>]]>
</
HTML>

<
Kolom SubColumnNumber="0" HTMLEncode="WAAR"/>

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

</
Standaard>
</
Schakelaar>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Dit XML-bestand wordt het aangepaste gegevenstype toegevoegd aan de WSS "bibliotheek" en komt overeen met het op tegen de GAC hadden vergadering.

Na het verplaatsen van al deze stukjes op zijn plaats, iisreset op de server en het moet alle gaan werken mooi.

WSS: Techniek voor het maken van CAML Velddefinities.

Aanvullende categorie: CAML

Hier is een grote terbeschikkingstelling door een kerel met de naam "craig" op een techniek voor het vinden van CAML definities voor veld inhoudstypen gebaseerd op echte live definities van een site.

Zijn post zegt het al. In het kort:

  1. Een inhoudstype maken.
  2. Het koppelen aan een lijst.
  3. Open de lijst met SharePoint Designer.
  4. Exporteren naar een 'personal webpakket'.
  5. Wijzig de naam in een CAB-bestand.
  6. Uitpakken van het manifest.
  7. Vind uw inhoudstype en bijbehorende CAML.

WSS: Samenvatting stappen om nuttige functies/elementen/etc. IntelliSense in VS 2005

Extra categorieën: Visual Studio 2005

Nuttige intellisense inschakelen voor functies, elementen, enz in visuele studio 2005:

  1. Toegang tot een WSS-server.
  2. Navigeer naar "c:\Program filescommon filesmicrosoft sharedweb server extensions12TEMPLATEXML"
  3. Open een ander windows Verkenner naar: "C:\Program FilesMicrosoft Visual Studio 8XmlSchemas"
  4. Kopieer de volgende bestanden uit de WSS-server naar uw VS 2005 schema's directory:
    1. WSS.XSD
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Start opnieuw op VS 2005
  6. Een nieuw XML-bestand aan een project toevoegen.
  7. Klik in de hoofdtekst van het XML-bestand.
  8. In het deelvenster Eigenschappen, Klik op "schema 's" en kies "wss.xsd" van de keuzes. (Het is niet nodig om te selecteren andere xsd omdat ze worden verwezen vanuit wss.xsd).

IntelliSense is nu ingeschakeld voor dat XML-document.

Zie Hier voor meer informatie over dit onderwerp en voor instructies over hoe WSS intellisense automatisch koppelen aan een XML-bestand.

WSS examen 70-541, Microsoft Windows SharePoint Services 3.0 – Ontwikkeling van toepassingen

Ik nam en de hierboven genoemde test vanmorgen doorstaan. Ik vond het examen moeilijk en eerlijk.

Er is een relatieve gebrek aan informatie over dit examen op het web. Ik ben niet zeker waarom.

Ik uiteraard gewoon te krijgen in elk detail over het examen dat ik nam, maar ik denk dat ik kan gerust zeggen de volgende:

  1. Vertrouwen van deze link: http://www.microsoft.com/learning/exams/70-541.mspx.

    Het vindt u wat u moet weten om te passeren van het examen en het is, IMO, zeer nauwkeurig.

  2. De koppeling ook beveelt Binnen Microsoft Windows SharePoint Services 3.0 door Ted Pattison & Daniel Larson. Dit boek behandelt bijna alle van de onderwerpen die de test adressen. Ik vond het geweldig in en van zichzelf dan eenvoudige examen prep. Het biedt grote voorbeelden en really got me denken over enkele nieuwe en interessante dingen te proberen. Als u wilt een paar stukjes in het boek overslaan, net kruisverwijzing van het boek TOC met de items in de koppeling van bovenaf.
  3. Niets verslaat daadwerkelijke hands-on ervaring. Hebt u tijd en interesse, volgen met de voorbeelden in het boek en vervolgens experimenteren met hen. U zult hebben een gemakkelijkere tijd op het examen evenals echt leren WSS toepassing programmeren.

</einde>Abonneren op mijn blog!

MOSS / InfoPath Forms Server (InfoPath 2007) prestaties van de drop-down lijst

Aanvullende categorie: InfoPath

Samenvatting: Een InfoPath 2007 formulier geïmplementeerd op een server MOSS biedt een drop-down lijst van leveranciers die zijn gekoppeld aan een aangepaste lijst MOSS. Bij het selecteren van een leverancier, regels toewijzen veldwaarden aan een handvol tekstvelden zoals de naam van de verkoper, adres, stad, staat, zip en telefoon. Prestaties is verschrikkelijk. We merken dat de prestaties slechter (in een niet-lineaire mode) voor elk extra veld bijwerken we op deze manier. H.D., Als we gewoon de naam verkoper bijwerken, het duurt [x] hoeveelheid tijd. Als we sales rep updaten, adres1, Adres2, stad, staat, zip, het duurt 10 keer langer.

Oplossing: Schrijven van een webservice (code van de steekproef kan worden gevonden Hier) dat wordt doorgegeven in de naam van een leverancier en is het resultaat terug de leverancier details. Vervolgens, de velden op deze manier toewijzen. Hoewel dit te lijkt vertragen, Er was geen waarneembaar verschil in prestaties wanneer wij toegewezen 1 veld versus 8 velden. Als een toegevoegde bonus, gebruikers krijgen een koele "contact opnemen met de server" Cylon effect terwijl ze wachten voor het formulier beroepen en consumeren de service resultaten.

MOSS: Uitzondering is opgetreden. (Uitzondering op HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

UPDATE: Wij vastbesloten nooit de oorzaak van dit probleem en het nooit oppervlakte weer.

We merken dat plotseling tijdens de uitvoering van een site ontwikkeling, twee gebruikers hebben geen toegang tot een siteverzameling. Deze accounts kunnen worden geverifieerd naar de belangrijkste site, maar wanneer het proberen om toegang tot een bepaalde site-collectie, ze krijgen gewoon een leeg scherm. Geen fouten weergegeven, gewoon een witte lege pagina.

Wij als een site collectie admin inloggen en probeert toe te voegen een van die gebruikers als een site admin en deze keer, op op "OK" te drukken, We krijgen deze boodschap:

Uitzondering is opgetreden. (Uitzondering op HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

We enige tijd dit onderzoeken en helaas, niet komen met iets nuttigs. Er waren sommige berichten in diagnoselogboek van het, maar het was moeilijk om precies het correleren van hen met dit probleem.

In het einde, wij de siteverzameling wordt verwijderd en opnieuw gemaakt en dat het opgelost.

Als ik erachter te komen veroorzaakt wat dit in de toekomst, Ik zal deze post bijwerken.