Monataj Arkivoj: Aŭgusto 2007

MUSKO antaŭenirita serĉon customization — Kazo faras gravi en altnivela serĉa XSLT

Mi ne modifas antaŭenirita serĉan XSLT tre ofte, Do ĝi ŝajnas ŝatas min estas grimpanta malgrandajn montetojn ĉiu tempo.

Mia plej nova leciono estas tio ĉi: Kazaj aferoj kiam referencanta kolumnon. En mia altnivela serĉo, Mi havas kolumnojn difinita kiel tio ĉi:

<Radiko Xmlns:Xsi="Http://Www.w3.org/2001/xmlschema-okazo">
<
Kolumnoj>
<
Kolumno Nomo="GafTrainingInvoiceNumber" />
<
Kolumno Nomo="GafTrainingInvoiceLocation" />
<
Kolumno Nomo="WorkId"/>
<
Kolumno Nomo="Senhonta"/>
<
Kolumno Nomo="Titolo"/>
<
Kolumno Nomo="Aŭtoro"/>
<
Kolumno Nomo="Grandeco"/>
<
Kolumno Nomo="Vojo"/>
<
Kolumno Nomo="Priskribo"/>
<
Kolumno Nomo="Skribi"/>
<
Kolumno Nomo="SiteName"/>
<
Kolumno Nomo="CollapsingStatus"/>
<
Kolumno Nomo="HitHighlightedSummary"/>
<
Kolumno Nomo="HitHighlightedProperties"/>
<
Kolumno Nomo="ContentClass"/>
<
Kolumno Nomo="IsDocument"/>
<
Kolumno Nomo="PictureThumbnailURL"/>
</
Kolumnoj>
</
Radiko>

La XLST kiu montras la fakturan nombron kaj fakturan lokon estis:

<P>
Trejnanta Fakturan Nombron: <Xsl:Valoro-de Elektita="GafTrainingInvoiceNumber"/>
<
Br></Br>
Trejnanta Fakturan Lokon: <Xsl:Valoro-de Elektita="GafTrainingInvoiceLocation"/>
</
P>

Tamen, La elektita devas referenci la nemoveblaĵon en ĉiuj pli malalta kazo, Kiel je:

<P>
Trejnanta Fakturan Nombron: <Xsl:Valoro-de Elektita="Gaftraininginvoicenumber"/>
<
Br></Br>
Trejnanta Fakturan Lokon: <Xsl:Valoro-de Elektita="Gaftraininginvoicelocation"/>
</
P>


Ĝis mi ĝustigis tion, Serĉaj rezultoj montris la etikedojn (T.e. "Trejnanta Fakturan Nombron") Sed neniu datumo.

MUSKO: Praktika Ekzemplo – Laŭmenda Datuma Tipo

Komerca Scenaro:

Entrepreno-#lar?a efektivigo de MUSKO por fabrikanta firmaon kun 30+ Ejoj kaj iu dekduo kompaniaj departementoj.

Komerca Objektivo:

#Malgra? homamaso de komercaj grupoj (Departementoj, Lokoj, Ktp), Certa datumo devus esti #da?rigi #?e tutmonda nivelo. Ekzemple, #A?toritata mastra listo de #?iuj fizikaj lokoj de la firmao (Ekz. Fabrikanta servojn, Staplaj lokoj, Vendaj oficejoj) Devus esti #da?rigi en centra loko.

Teknika Problemo:

La entreprena taksonomio estis efektivigita uzanta multoblajn ejajn kolektojn. Ni estus #?ati krei la #a?toritata liston de fizikaj lokoj en #la?menda WSSa listo. Tiam, Kiam ni devis havi kolumnon en kontenta tipo (#A? kolumno aldonis liston #a? doc biblioteko) Kiu enhavis kompaniajn lokojn, Ni kreus kolumnon uzanta la "lookup" datatype kaj punkto al #?i tiu mastra listo.

#Beda?rinde, Lookup datatypes devas aliri fontan liston "loke" Signifanta ke nia #a?toritata listo ne povas #da?ri ejajn kolektojn.

Teknika Solvo:

Efektivigi novan #la?menda datuman tipon efektivigis bazita sur SPField kaj reprezentita kiel DropDownList en la UI kies ListItems #lo?i de la mastra WSSa listo.

Ni kreis novan ejan kolekton vokis "http://localhost/EnterpriseData". Tie, Ni kreis #la?menda liston nomis "Kompaniajn Lokojn". #Tio ?i enlistigas nur uzas la norman "Titolon" Kapti enhavi la liston de realaj kompaniaj lokoj.

Unu sekvas pluraj discrete #pa?o krei #la?menda datumon entajpas WSS. Ili estas:

  1. Difini klason kiu heredas de SPField (Unu povas heredi de aliaj kampoj se postulita).

#?I tie estas la kodo por tio:

Publika Klaso XYZZYCorporateLocationField : SPFieldText
{
Publika XYZZYCorporateLocationField
(SPFieldCollection Kampoj, Ŝnuro TypeName, Ŝnuro DisplayName)
: Bazo(Kampoj, TypeName, DisplayName) { }

Publika XYZZYCorporateLocationField
(SPFieldCollection Kampoj, Ŝnuro DisplayName)
: Bazo(Kampoj, DisplayName) { }

Publika Superregi BaseFieldControl FieldRenderingControl
{
Akiri
{
BaseFieldControl Kontrolo = Nova XYZZYCorporateLocationFieldControl();
Kontrolo.FieldName = Tio ĉi.InternalName;
Reveno Kontrolo;
} //Akiri
} // Fieldrenderingcontrol

Publika Superregi Ŝnuro GetValidatedString(Objekto Valoro)
{
Se (Tio ĉi.Postulita || Valoro.ToString().Egaluloj(#?Nuro.Senhoma))
{
Ĵeti Nova SPFieldValidationException ("Departemento ne estas asignita.");
}
Reveno Bazo.GetValidatedString(Valoro);
} // Getvalidatedstring

} // XYZZYCorporateLocation

  1. Difini alian klason kiu heredas de la baza kampa kontrolo, Kiel je:

Publika Klaso XYZZYCorporateLocationFieldControl : BaseFieldControl
{
Protektita DropDownList XYZZYCorporateLocationSelector;

Protektita Superregi Ŝnuro DefaultTemplateName
{
Akiri
{
Reveno "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

Publika Superregi Objekto Valoro
{
Akiri
{
EnsureChildControls();
Reveno Tio ĉi.XYZZYCorporateLocationSelector.SelectedValue;
} // Akiri
Fiksita
{
EnsureChildControls();
Tio ĉi.XYZZYCorporateLocationSelector.SelectedValue = (Ŝnuro)Tio ĉi.ItemFieldValue;
} // Fiksita
} // Superregi objektan Valoron

Protektita Superregi Malplena CreateChildControls()
{

Se (Tio ĉi.Kampo == Null || Tio ĉi.ControlMode == SPControlMode.#Montri?o)
Reveno;

Bazo.CreateChildControls();

Tio ĉi.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

Se (Tio ĉi.XYZZYCorporateLocationSelector == Null)
Ĵeti Nova Escepto("ERARO: Ne povas ŝarĝi .ASCXa dosiero!");

Se (!Tio ĉi.#Pa?o.IsPostBack)
{

Uzanta (SPSite Ejo = Nova SPSite("Http://Localhost/enterprisedata"))
{
Uzanta (SPWeb Araneaĵa = ejo.OpenWeb())
{

SPList CurrentList = araneaĵo.Listoj["Kompaniaj Lokoj"];

Foreach (SPItem XYZZYCorporateLocation Je CurrentList.Eroj)
{
Se (XYZZYCorporateLocation["Titolo"] == Null) #Da?ri;

Ŝnuro TheTitle;
TheTitle = XYZZYCorporateLocation["Titolo"].ToString();

Tio ĉi.XYZZYCorporateLocationSelector.Eroj.Aldonas
(Nova ListItem(TheTitle, TheTitle));

} // Foreach

} // Uzanta spweb araneaĵa = ejo.Openweb()
} // Uzanta spsite ejo = nova spsite("Http://Localhost/enterprisedata")

} // Se ne postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

La supra kodo resume efektivigas la logikon por #lo?i la DropDownList kun valoroj de la WSS #la?menda listo #trovi?i #?e http://localhost/enterprisedata Kaj nomis "Kompaniajn Departementojn".

Mi difinis #amba? klasojn en ununura .Cs dosiero, Kompilis ?in kaj metita ?in en la GAC (Forta postulata, Nature).

  1. Efektivigi kontrolan #?ablono (.Ascx) Kiel montrita:

<%@ Kontrolo Lingvo="C#" Heredas="Microsoft.SharePoint.Portalo.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portalo,Versio=12.0.0.0,Kulturo=#ne?trala,PublicKeyToken=71e9bce111e9429c" CompilationMode="#?Iam" %>
<%
@ Registro Tagprefix="Wssawc" Namespace="Microsoft.SharePoint.WebControls" Asembleo="Microsoft.SharePoint, Versio=12.0.0.0, Kulturo=neŭtrala, PublicKeyToken=71e9bce111e9429c" %> <%@ Registro Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Asembleo="Microsoft.SharePoint, Versio=12.0.0.0, Kulturo=neŭtrala, PublicKeyToken=71e9bce111e9429c" %>
<SharePoint:RenderingTemplate IDENTIGAĴO="XYZZYCorporateLocationFieldControl" Runat="Servilo">
<Ŝablono>
<Aspido:DropDownList IDENTIGAĴO="XYZZYCorporateLocationSelector" Runat="Servilo" />
</Ŝablono>
</
SharePoint:RenderingTemplate>

La sur estas savita en c:\Programo registrasoftajn dosierojnmicrosoft dividitaretservilajn etendaĵojn12controltemplates.

  1. Fine, Ni kreas XMLan dosieron savi en la …..12XMLa adresaro. Tio ĉi estas CAML kiu difinas nian laŭmendan datuman tipon kaj por mia ekzemplo, Similas tion ĉi:

<?Xml Versio="1.0" Kodanta="Utf-8" ?>
<
FieldTypes>
<
FieldType>
<
Kampo Nomo="TypeName">CorporateLocations</Kampo>
<
Kampo Nomo="ParentType">Teksto</Kampo>
<
Kampo Nomo="TypeDisplayName">Kompaniaj Lokoj</Kampo>
<
Kampo Nomo="TypeShortDescription">Ĉiuj XYZZY Kompaniaj lokoj inkluzivanta fabrikadon aŭ aliaj servoj.</Kampo>
<
Kampo Nomo="UserCreatable">VERA</Kampo>
<
Kampo Nomo="ShowInListCreate">VERA</Kampo>
<
Kampo Nomo="ShowInDocumentLibraryCreate">VERA</Kampo>
<
Kampo Nomo="ShowInSurveyCreate">VERA</Kampo>
<
Kampo Nomo="ShowInColumnTemplateCreate">VERA</Kampo>
<
Kampo Nomo="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Versio=1.0.0.0, Kulturo=neŭtrala, PublicKeyToken=b0b19e85410990c4</Kampo>
<
RenderPattern Nomo="DisplayPattern">
<
Ŝaltilo>
<
Expr>
<
Kolumno />
</
Expr>

<Kazo Valoro=""/>

<Defaŭlta>
<
HTML>
<![CDATA[
<Daŭri dum stilan="koloron:Ruĝa"><B>]]>
</
HTML>

<
Kolumno SubColumnNumber="0" HTMLEncode="VERA"/>

<HTML><![CDATA[</B></Daŭri dum>]]></HTML>

</
Defaŭlta>
</
Ŝaltilo>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Ĉi tiu XMLa dosiero aldonas la laŭmendan datuman tipon al la WSSa "biblioteko" Kaj egalas ĝin supre kontraŭ la GAC'd asembleo.

Post kiam movanta ĉiuj ĉi tiuj pecoj en loko, Iisreset sur la servilo kaj ĝi devus ĉiujn komencas laboranta agrable.

WSS: Tekniko por kreanta CAMLan kampon difinoj.

Suplementa kategorio: CAML

Ĉi tie Estas granda afiŝo de samrangulo nomis "craig" Sur tekniko por trovanta CAMLajn difinojn por kampa enhavo tajpas bazita de veraj vivaj difinoj de ejo.

Lia poŝtanta diras ĝin ĉiuj. En raporto:

  1. Krei kontentan tipon.
  2. Asocii ĝin kun listo.
  3. Malfermi supre la liston kun SharePoint Designer.
  4. Eksporti al "propra araneaĵa pako".
  5. Renomi al .Taksio.
  6. Eltiri la videblan.
  7. Trovi vian kontentan tipon kaj rilatan CAML.

WSS: Resumaj paŝoj ebligi utilajn Ĉefaĵajn/Elementojn/ktp. Intellisense je Kontraŭ 2005

Suplementaj kategorioj: Vida Studio 2005

Ebligi utilan intellisense por Ĉefaĵoj, Elementoj, Ktp. en vida studio 2005:

  1. Aliri WSSan servilon.
  2. Navigi al "c:\Programo registrasoftajn dosierojnmicrosoft dividitaretservilajn etendaĵojn12ŜABLONAXML"
  3. Malfermi alian fenestran esploriston indikanta al: "C:\Programo RegistrasMicrosoft Vida Studio 8XmlSchemas"
  4. Kopii la sekvantajn dosierojn de la WSSa servilo al via Kontraŭ 2005 schemas adresaro:
    1. Wss.Xsd
    2. CamlQuery.Xsd
    3. CamlView.Xsd
    4. CoreDefintions.Xsd
  5. Rekomenci Kontraŭ 2005
  6. Aldoni novan XMLan dosieron al projekto.
  7. Klako en la korpo de la XMLa dosiero.
  8. En la nemoveblaĵoj pane, Klako sur "Schemas" Kaj elekto "wss.Xsd" De la elektoj. (Ĝi ne estas necesa elekti alia xsd-a pro tio ke ili estas referencita de wss.Xsd).

Intellisense estas nun ebligita por tiu XMLa dokumento.

Vidi Ĉi tie Por pli da informo sur #?i tiu temo kaj por instruoj sur kiel al #a?tomate asociita WSS intellisense kun ajna XMLa dosiero.

WSSa ekzameno 70-541, Microsoft Fenestroj SharePoint Servoj 3.0 – Aplika Evoluado

Mi prenis kaj pasis la sur menciita elprovi ĉi tiun matenon. Mi trovis la ekzamenon esti malfacila kaj foiro.

Estas relativa manko de informo sur ĉi tiu ekzameno sur la araneaĵo. Mi ne estas certe kial.

Mi evidente ne akiros en ajna detalo pri la ekzameno mi prenis, Sed mi pensas min sekure povas diri la sekvantaron:

  1. Fidi ĉi tiun ligon: http://www.microsoft.com/learning/exams/70-541.mspx.

    Ĝi enlistigas kion vi devas scii pasi la ekzamenon kaj ĝin estas, IMO, Tre preciza.

  2. La ligo ankaŭ rekomendas En Microsoft Fenestroj SharePoint Servoj 3.0 De Ted Pattison & Daniel Larson. Ĉi tiu libro kovras preskaŭ ĉiuj la temoj ke la testaj adresoj. Mi trovis ĝin esti granda en kaj de ĝi mem pretere simpla ekzameno preparas. Ĝi provizas grandajn ekzemplojn kaj vere akirita min pensanta pri kelkaj novaj kaj interesaj aferoj provi. Se vi deziras preterpasi kelkajn pecojn en la libro, Nura kruco-referenci la TOC de la libro kun la eroj en la ligo de supra.
  3. Nenio venkas realajn manojn-sur sperto. Se vi havas tempon kaj intereson, Sekvi kune kun la ekzemploj en la libro kaj tiam eksperimenti kun ili. Vi havos pli facilan tempon sur la ekzameno tiel kiel vere lerni WSSa apliko programaro.

</Fino>Aboni al mia blogo!

MUSKO / InfoPath Forma Servilo (InfoPath 2007) Falo-malsupren enlistigi elfaron

Suplementa kategorio: InfoPath

Resuma: InfoPath 2007 Formi deplojiĝita al MUSKA servilo provizas falon-malsupren enlistigi de vendistoj ligita al laŭmenda MUSKA listo. Al elektanta vendiston, Reguloj asignas kampajn valorojn al iometo de tekstaj kampoj kiel venda deputito nomo, Adreso, Urbo, Stato, zipo kaj telefono. Elfaro estas horora. Ni rimarkas ke elfaro akiras pli malbonan (En ne-linia modo) Por ĉiu suplementa kampo ni ĝisdatigas ĉi tiun vojon. T.e., Se ni nur ĝisdatigas la vendan deputitan nomon, Ĝi prenas [X] Kvanto de tempo. Se ni ĝisdatigas vendan deputiton, Address1, Address2, Urbo, Stato, Zipo, Ĝi prenas 10 Oble pli longa.

Solvo: Skribi araneaĵan servon (Ekzempla kodo povas esti trovita Ĉi tie) Kiu estas pasita en la nomo de vendisto kaj ĝi revenas reen la vendistajn detalojn. Tiam, Asigni la kampojn ĉi tiu vojo. Kvankam tio ĉi ankaŭ ŝajnas malrapida, Estis ne discernable diferenco en elfaro kiam ni asignis 1 Kampo kontraŭ 8 Kampoj. Kiel plia gratifiko, Uzantoj akiras freŝan "kontaktanta la servilon" Cylon Realigi dum ili atendas por la formo alvoki kaj konsumi la servajn rezultojn.

MUSKO: Escepto okazis. (Escepto de HRESULT: 0X80020009 (DISP_E_ESCEPTO))

ĜISDATIGO: Ni neniam determinis la radikan aferon de ĉi tiu problemo kaj ĝi neniam supriĝi denove.

Ni rimarkas dum efektivigo de evoluada ejo ke subite, Du uzantoj estas nekapablaj aliri ejan kolekton. Tiuj kontoj povas aŭtentikigi al la ĉefa ejo, Sed kiam provanta aliri apartan ejan kolekton, Ili nur akiras malplenan ekranon. Neniuj eraroj montris, Nur blanka malplena #pa?o.

Ni ensalutas kiel eja kolekto admin kaj provo aldoni unu el tiuj uzantoj kiel ejo admin kaj #?i tiu tempo, Al premanta "OK", Ni akiras #?i tiu #mesa?o:

Escepto okazis. (Escepto de HRESULT: 0X80020009 (DISP_E_ESCEPTO))

Ni elspezis iun tempon esploranta #tio ?i kaj #beda?rinde, Didn?? Venita supre kun io ajn utila. Estis kelkaj #mesa?o en la diagnoza #?tipo, Sed ?i estis malfacile al #?uste correlate ili kun #?i tiu afero.

En la fino, Ni foriganta la ejan kolekton kaj re-kreita ?in kaj ke solvis ?in.

Se mi elkalkulas kion kaŭzis tion ĉi en estonteco, Mi ĝisdatigos ĉi tiun poŝton.