Månedlige Arkiver: August 2007

MOSS avansert tilpasning av søk — Saken gjør noe i Avansert søk XSLT

Jeg endre ikke avansert søk XSLT svært ofte, så det virker som jeg er klatring små åser hver gang.

Min nyeste leksjon er dette: Saken saker når refererer til en kolonne. I min Avansert søk, Jeg har kolonner som er definert som dette:

<roten xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
Kolonner>
<
Kolonne navn="GafTrainingInvoiceNumber" />
<
Kolonne navn="GafTrainingInvoiceLocation" />
<
Kolonne navn="Arbeids-IDen"/>
<
Kolonne navn="Rang"/>
<
Kolonne navn="Tittel"/>
<
Kolonne navn="Forfatter"/>
<
Kolonne navn="Størrelse"/>
<
Kolonne navn="Banen"/>
<
Kolonne navn="Beskrivelse"/>
<
Kolonne navn="Skrive"/>
<
Kolonne navn="Områdenavn"/>
<
Kolonne navn="CollapsingStatus"/>
<
Kolonne navn="HitHighlightedSummary"/>
<
Kolonne navn="HitHighlightedProperties"/>
<
Kolonne navn="ContentClass"/>
<
Kolonne navn="IsDocument"/>
<
Kolonne navn="PictureThumbnailURL"/>
</
Kolonner>
</
roten>

XLST som viser hvor fakturaen nummer og faktura hadde vært:

<p>
Trening fakturanummer: <XSL:verdien av Velg="GafTrainingInvoiceNumber"/>
<
br></br>
Faktura skolene: <XSL:verdien av Velg="GafTrainingInvoiceLocation"/>
</
p>

Men, Velg har å referere til egenskapen i alle små bokstaver, som i:

<p>
Trening fakturanummer: <XSL:verdien av Velg="gaftraininginvoicenumber"/>
<
br></br>
Faktura skolene: <XSL:verdien av Velg="gaftraininginvoicelocation"/>
</
p>


Til jeg løst som, Resultatene viste etikettene (dvs.. "Trening fakturanummeret") men ingen data.

MOSS: Funksjonell eksempel-egendefinert datatype

Virksomhet Scenario:

Factory-bred implementering av MOSS for produksjonsbedrift med 30+ områder og et par dusin corporate avdelinger.

Forretningsmål:

Til tross for en rekke virksomhet grupper (avdelinger, steder, osv.), visse data bør opprettholdes på et globalt nivå. For eksempel, en autoritativ hovedliste over alle fysiske plasseringer av selskapet (f.eks. produksjonsanlegg, lagerlokasjoner, salgskontor) bør opprettholdes sentralt.

Teknisk Problem:

Enterprise taksonomien ble implementert ved hjelp av flere områdesamlinger. Vi ville ha likt å opprette autoritative listen over fysiske plasseringer i en egendefinert WSS-liste. Deretter, Når vi måtte ha en kolonne i en innholdstype (eller en kolonne lagt til en liste eller doc dokumentbibliotek) som inneholdt corporate steder, Vi vil skape en kolonne ved hjelp av oppslaget"" datatype og punkt til denne hovedlisten.

Dessverre, Oppslag datatyper må vise en kildeliste "lokalt" betyr at vår autoritative liste ikke kan dekke områdesamlinger.

Teknisk løsning:

Implementere en ny egendefinert datatype gjennomført basert på SPField og representert som en DropDownList i Brukergrensesnittet som ListItems Fyll fra WSS liste.

Vi laget en ny områdesamling kalt "http://localhost/EnterpriseData". Det, Vi har opprettet en egendefinert liste kalt "Corporate Locations". Denne listen bruker bare standard "tittel" feltet inneholder listen over faktiske corporate steder.

En følger flere separate trinn for å opprette en egendefinert datatype i WSS. De er:

  1. Definere en klasse som arver fra SPField (man kan arve fra andre felt hvis nødvendig).

Her er koden for det:

offentlig klassen XYZZYCorporateLocationField : SPFieldText
{
offentlig XYZZYCorporateLocationField
(SPFieldCollection felt, streng typeName, streng displayName)
: Base(felt, typeName, displayName) { }

offentlig XYZZYCorporateLocationField
(SPFieldCollection felt, streng displayName)
: Base(felt, displayName) { }

offentlig overstyre BaseFieldControl FieldRenderingControl
{

{
BaseFieldControl kontroll = nye XYZZYCorporateLocationFieldControl();
kontroll. Feltnavn = Dette.InternalName;
avkastning kontroll;
} //få
} // fieldrenderingcontrol

offentlig overstyre streng GetValidatedString(objekt verdi)
{
Hvis (Dette.Kreves || verdi. ToString().Er lik(Streng.Tom))
{
kaste nye SPFieldValidationException ("Avdelingen er ikke tilordnet.");
}
avkastning Base.GetValidatedString(verdi);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Definere en klasse som arver fra kontrollen Basisfelt, som i:

offentlig klassen XYZZYCorporateLocationFieldControl : BaseFieldControl
{
beskyttet DropDownList XYZZYCorporateLocationSelector;

beskyttet overstyre streng DefaultTemplateName
{

{
avkastning "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

offentlig overstyre objekt Verdi
{

{
EnsureChildControls();
avkastning Dette.XYZZYCorporateLocationSelector.SelectedValue;
} // få
Sett
{
EnsureChildControls();
Dette.XYZZYCorporateLocationSelector.SelectedValue = (streng)Dette.ItemFieldValue;
} // Sett
} // Overstyr object verdi

beskyttet overstyre ugyldige CreateChildControls()
{

Hvis (Dette.Feltet == null || Dette.ControlMode == SPControlMode.Skjerm)
avkastning;

Base.CreateChildControls();

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

Hvis (Dette.XYZZYCorporateLocationSelector == null)
kaste nye Unntak("FEIL: Kan ikke laste. ASCX-fil!");

Hvis (!Dette.IsPostBack side.)
{

ved hjelp av (SPSite Site = nye SPSite("http://localhost/enterprisedata"))
{
ved hjelp av (SPWeb Web = området. OpenWeb())
{

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

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

streng Spørringsresultat;
Spørringsresultat = XYZZYCorporateLocation["Tittel"].ToString();

Dette.XYZZYCorporateLocationSelector.Items.Add
(nye ListItem(Spørringsresultat, Spørringsresultat));

} // foreach

} // bruke spweb web = site.openweb()
} // bruke spsite siden = nye spsite("http://localhost/enterprisedata")

} // Hvis ikke en tilbakesending

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Ovenfor koden i utgangspunktet implementerer logikken fyller DropDownList med verdier fra WSS egendefinerte listen på http://localhost/enterprisedata og navngitte "Corporate avdelinger".

Jeg definert begge klassene i en enkelt .cs fil, samlet og putte den i GAC (sterk kreves, selvfølgelig).

  1. Implementere en kontrollmal (.ascx) som vist:

<%@ Kontroll Språk= "C#" Arver="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Versjon = 12.0.0.0, kultur = nøytral,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Alltid" %>
<%
@ Registrering TagPrefix= "wssawc" Namespace="Microsoft.SharePoint.webControls" Montering="Microsoft.SharePoint, Versjon = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Registrering TagPrefix= "SharePoint" Namespace="Microsoft.SharePoint.webControls" Montering="Microsoft.SharePoint, Versjon = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Gjengivelsesmalen ID= "XYZZYCorporateLocationFieldControl" RUNAT= "server">
<Mal>
<ASP:DropDownList ID= "XYZZYCorporateLocationSelector" RUNAT= "server" />
</Mal>
</
SharePoint:Gjengivelsesmalen>

Ovenfor lagres i c:\programmet filescommon filesmicrosoft sharedweb server extensions12controltemplates.

  1. Endelig, vi opprette en XML-fil til å lagre i den... 12XML katalogen. Dette er CAML som definerer våre egendefinert datatype og mitt eksempel, ser slik ut:

<?XML versjon="1.0" koding="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Feltet navn="TypeName">CorporateLocations</Feltet>
<
Feltet navn="ParentType">Tekst</Feltet>
<
Feltet navn="TypeDisplayName">Corporate steder</Feltet>
<
Feltet navn="TypeShortDescription">Alle XYZZY Corporate steder inkludert produksjons- eller andre anlegg.</Feltet>
<
Feltet navn="UserCreatable">SANT</Feltet>
<
Feltet navn="ShowInListCreate">SANT</Feltet>
<
Feltet navn="ShowInDocumentLibraryCreate">SANT</Feltet>
<
Feltet navn="ShowInSurveyCreate">SANT</Feltet>
<
Feltet navn="ShowInColumnTemplateCreate">SANT</Feltet>
<
Feltet navn="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Versjon = 1.0.0.0, Culture = neutral, PublicKeyToken = b0b19e85410990c4</Feltet>
<
RenderPattern navn="DisplayPattern">
<
Bryteren>
<
Uttr>
<
Kolonne />
</
Uttr>

<Saken Verdi=""/>

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

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

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

</
Standard>
</
Bryteren>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Denne XML-filen legger til den egendefinerte datatypen WSS "bibliotek" og matcher den mot GAC hadde montering.

Flyttet alle bitene på plass, iisreset på serveren, og det bør alle starte fungerer fint.

WSS: Teknikk for å skape CAML felts definisjoner.

Ekstra kategori: CAML

her er et flott innlegg av en kar ved navn "craig" på en teknikk for å finne CAML definisjoner for feltet-innholdstyper som er basert på ekte live definisjoner fra et område.

Hans innlegg sier alt. I korte trekk:

  1. Opprette en innholdstype.
  2. Knytte den til en liste.
  3. Åpne opp listen med SharePoint Designer.
  4. Eksportere til en "Personlig webpakke".
  5. Gi nytt navn til en CAB.
  6. Pakk ut manifest.
  7. Finne innholdstype og tilknyttede CAML.

WSS: Sammendrag fremgangsmåte for å aktivere nyttige funksjoner/elementer/etc. IntelliSense i VS 2005

Flere kategorier: Visual Studio 2005

Å aktivere nyttig intellisense for funksjoner, elementer, etc i visual studio 2005:

  1. Få tilgang til en WSS-server.
  2. Naviger til "c:\programmet filescommon filesmicrosoft sharedweb server extensions12TEMPLATEXML"
  3. Åpne en annen windows explorer peker til: "C:\Program FilesMicrosoft Visual Studio 8XmlSchemas"
  4. Kopier følgende filer fra WSS serveren til din VS 2005 skjemaer-mappen:
    1. WSS.XSD
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Start på nytt VS 2005
  6. Legge til en ny XML-fil til et prosjekt.
  7. Klikk i brødteksten i XML-filen.
  8. I egenskaper-ruten, Klikk på "skjemaer" og velge "wss.xsd" fra valgene. (Det er ikke nødvendig å velge andre xsd siden det refereres til fra wss.xsd).

IntelliSense er nå aktivert for dette XML-dokumentet.

Se her for mer informasjon om dette emnet og instruksjoner om hvordan du automatisk partner WSS intellisense med alle XML-filer.

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

Jeg tok og bestått ovenfor nevnte test denne morgenen. Jeg fant på eksamen å være vanskelig og rettferdig.

Det er en relativ mangel på informasjon på denne eksamen på nettet. Jeg er ikke sikker på hvorfor.

Jeg vil ikke åpenbart komme inn i noen detalj om eksamen jeg tok, men jeg tror jeg kan trygt si følgende:

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

    Det viser hva du trenger å vite for å passere eksamen, og det er, IMO, svært nøyaktig.

  2. Koblingen anbefaler også Inne Microsoft Windows SharePoint Services 3.0 av Ted Pattison & Daniel Larson. Denne boken dekker nesten alle fag som testen løser. Jeg fant det å være stor inne og av selv utover enkel eksamen prep. Det gir gode eksempler og virkelig fikk meg tenking om noen nye og interessante ting å prøve. Hvis du vil hoppe over et par biter i boken, bare kryssreferere bokens Innholdsfortegnelsen med elementene i koblingen ovenfra.
  3. Ingenting slår faktiske praktisk erfaring. Hvis du har tid og interesse, følge med eksemplene i boken, og deretter eksperimenterer du med dem. Du vil ha en enklere tid på eksamen så vel som virkelig lære WSS programmeringsgrensesnittet.

</slutten>Abonner på bloggen min!

MOSS / InfoPath Forms Server (InfoPath 2007) rullegardinlisten ytelse

Ekstra kategori: InfoPath

Sammendrag: En InfoPath 2007 deployert til en MOSS server-skjemaet gir en miste-ned liste over leverandører som er knyttet til en egendefinert MOSS-liste. Når du velger en leverandør, regler tilordne verdier til en håndfull tekstfelt som salgsrepresentant navn, adresse, byen, tilstand, zip og telefon. Ytelse er fryktelig. Vi merker at ytelsen blir verre (i et ikke-lineært) for hvert enkelt felt oppdaterer vi denne måten. Dvs., Hvis vi bare oppdatere salgsrepresentant navnet, Det tar [x] tidsperiode. Hvis vi oppdaterer salgsrepresentant, address1, Adresse2, byen, tilstand, zip, Det tar 10 ganger lenger.

Løsning: Skrive en webtjeneste (eksempelkode finnes her) som er sendt i en leverandør og returneres tilbake leverandør detaljer. Deretter, tilordne feltene slik. Selv om dette virker treg, Det var ingen merkes forskjell i ytelse når vi tildelt 1 feltet versus 8 felt. Som en ekstra bonus, brukerne får en kul "kontakter serveren" Cylon effekten mens de venter på skjemaet for å aktivere og bruke tjenesten resultater.

MOSS: Unntak oppstod. (Exception from HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

OPPDATERINGEN: Vi har aldri bestemt det rot årsaken til dette problemet og det aldri overflaten igjen.

Vi merker under implementering av et nettsted utvikling som plutselig, to brukere får ikke tilgang til en områdesamling. Disse kontoene kan godkjenne på hovednettstedet, men når du prøver å få tilgang til en bestemt områdesamling, de får bare en blank skjerm. Ingen feil vises, bare en hvit tom side.

Vi logger deg på som en administrator for samling og prøver å legge til en av disse brukerne som en administrator, og denne gangen, Når du trykker på "OK", Vi får denne meldingen:

Unntak oppstod. (Exception from HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Vi brukte litt tid forskning dette og dessverre, ikke komme opp med noe nyttig. Det var noen meldinger i diagnoseloggen, men det var vanskelig å nøyaktig relatere dem med dette problemet.

Til slutt, løste vi områdesamlingen slettes og opprettes på nytt det og at det.

Hvis jeg finne ut hva som forårsaket dette i fremtid, Jeg vil oppdatere dette innlegget.