maandelikse Argiewe: Augustus 2007

MOSS gevorderde soektog aanpassing — Geval nie saak in gevorderde soek XSLT

Ek verander nie gevorderde soektog XSLT dikwels, sodat dit lyk asof ek klim klein heuwels elke keer.

My nuutste les is dit: Saak saak by die verwysing van 'n kolom. In my gevorderde soektog, Ek het kolomme gedefinieer as:

<wortel xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance">
<
Kolomme>
<
Kolom Naam="GafTrainingInvoiceNumber" />
<
Kolom Naam="GafTrainingInvoiceLocation" />
<
Kolom Naam="WorkId"/>
<
Kolom Naam="Rangskik"/>
<
Kolom Naam="Titel"/>
<
Kolom Naam="Skrywer"/>
<
Kolom Naam="Grootte"/>
<
Kolom Naam="Pad"/>
<
Kolom Naam="Description"/>
<
Kolom Naam="Skryf"/>
<
Kolom Naam="Site Naam"/>
<
Kolom Naam="CollapsingStatus"/>
<
Kolom Naam="HitHighlightedSummary"/>
<
Kolom Naam="HitHighlightedProperties"/>
<
Kolom Naam="ContentClass"/>
<
Kolom Naam="IsDocument"/>
<
Kolom Naam="PictureThumbnailURL"/>
</
Kolomme>
</
wortel>

Die XLST dat u die faktuur en faktuur plek was:

<p>
Training Invoice Number: <xsl:waarde van kies="GafTrainingInvoiceNumber"/>
<
br></br>
Training Invoice Location: <xsl:waarde van kies="GafTrainingInvoiceLocation"/>
</
p>

Egter, die kies het om die eiendom te verwysing in alle kleinletters, soos in:

<p>
Training Invoice Number: <xsl:waarde van kies="gaftraininginvoicenumber"/>
<
br></br>
Training Invoice Location: <xsl:waarde van kies="gaftraininginvoicelocation"/>
</
p>


Until I corrected that, search results showed the labels (d.w.z. "Training Invoice Number") but no data.

MOSS: Funksionele Voorbeeld - Custom Data Tipe

Besigheid scenario:

Onderneming breë implementering van MOSS vir produksie-maatskappy met 30+ terreine en 'n paar dosyn korporatiewe departemente.

Besigheid doel:

Ten spyte van 'n menigte van die besigheid groepe (departemente, plekke, ens.), sekere data moet in stand gehou word op 'n globale vlak. Byvoorbeeld, 'n gesaghebbende meester lys van al die fisiese plekke van die maatskappy (bijv. produksie fasiliteite, pakhuis plekke, verkope kantore) behou moet word in 'n sentrale plek.

Tegniese Probleem:

Die onderneming taksonomie is geïmplementeer met behulp van verskeie webwerf versamelings. Ons wil graag die gesaghebbende lys van fisiese plekke te skep in 'n persoonlike WSS lys. Toe, wanneer ons nodig het om 'n kolom in 'n tipe inhoud te hê (of 'n kolom by 'n lys of doc biblioteek) wat vervat korporatiewe plekke, we would create a column using the "lookup" gegee tipe en punt na die meester lys.

Ongelukkig, lookup datatypes must access a source list "locally" Dit beteken dat ons gesaghebbende lys nie kan strek webwerf versamelings.

Tegniese oplossing:

Implementering van 'n nuwe persoonlike data tipe geïmplementeer wat gebaseer is op SPField en voorgestel as 'n DropDown List in die UI wie ListItems vul van die meester WSS lys.

Ons het 'n nuwe tuiste versameling genoem "http://localhost/EnterpriseData". Daar, we created a custom list named "Corporate Locations". This list just uses the standard "Title" veld van die lys van die werklike korporatiewe plekke te bevat.

Een volg 'n paar diskrete stappe om 'n persoonlike data tipe te skep in WSS. Hulle is:

  1. Definieer 'n klas wat erf van SPField ('n mens kan besit van ander velde, indien nodig).

Hier is die kode vir daardie:

openbare klas XYZZYCorporateLocationField : SPFieldText
{
openbare XYZZYCorporateLocationField
(SPFieldCollection velde, string typeName, string displayName)
: basis(velde, typeName, displayName) { }

openbare XYZZYCorporateLocationField
(SPFieldCollection velde, string displayName)
: basis(velde, displayName) { }

openbare oorheers BaseFieldControl FieldRenderingControl
{
kry
{
BaseFieldControl control = nuwe XYZZYCorporateLocationFieldControl();
control.FieldName = hierdie.Interne Naam;
terugkeer control;
} //kry
} // fieldrenderingcontrol

openbare oorheers string GetValidatedString(voorwerp waarde)
{
indien (hierdie.Required || value.ToString().Equals(String.Leë))
{
gooi nuwe SPFieldValidationException ("Department is not assigned.");
}
terugkeer basis.GetValidatedString(waarde);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Definieer 'n ander klas wat afgelei van die basis veld beheer, soos in:

openbare klas XYZZYCorporateLocationFieldControl : BaseFieldControl
{
beskerm DropDown List XYZZYCorporateLocationSelector;

beskerm oorheers string DefaultTemplateName
{
kry
{
terugkeer "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

openbare oorheers voorwerp Waarde
{
kry
{
EnsureChildControls();
terugkeer hierdie.XYZZYCorporateLocationSelector.SelectedValue;
} // kry
stel
{
EnsureChildControls();
hierdie.XYZZYCorporateLocationSelector.SelectedValue = (string)hierdie.ItemFieldValue;
} // stel
} // override object Value

beskerm oorheers nietig CreateChildControls()
{

indien (hierdie.Field == nul || hierdie.ControlMode == SPControlMode.Vertoon)
terugkeer;

basis.CreateChildControls();

hierdie.XYZZYCorporateLocationSelector =
(DropDown List)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

indien (hierdie.XYZZYCorporateLocationSelector == nul)
gooi nuwe Uitsondering("ERROR: Cannot load .ASCX file!");

indien (!hierdie.Page.IsPostBack)
{

die gebruik van (SPSite site = nuwe SPSite("Http://localhost / enterprisedata"))
{
die gebruik van (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists["Corporate Locations"];

foreach (SPItem XYZZYCorporateLocation in currentList.Items)
{
indien (XYZZYCorporateLocation["Title"] == nul) voortgaan;

string theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

hierdie.XYZZYCorporateLocationSelector.Items.Add
(nuwe ListItem(theTitle, theTitle));

} // foreach

} // using spweb web = site.openweb()
} // using spsite site = new spsite("Http://localhost/enterprisedata")

} // if not a postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Die bogenoemde kode implemente basies die logika vir die mense aan die DropDown List, met waardes van die WSS persoonlike lys geleë op http://localhost/enterprisedata and named "Corporate Departments".

Ek gedefinieer beide klasse in 'n enkele. Cs lêer, saamgestel is dit en sit dit in die GAC (sterk vereiste, natuurlik).

  1. Implementering van 'n beheer sjabloon (.ascx) soos aangedui:

<%@ Beheer Taal="C#" Erf="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Weergawe = 12.0.0.0, Kultuur = neutraal,PublicKeyToken = 71e9bce111e9429c" compilationMode="Always" %>
<%
@ Registreer Tagprefix="wssawc" Naamruimte="Microsoft.SharePoint.WebControls" Vergadering="Microsoft.SharePoint, Weergawe = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Registreer Tagprefix="SharePoint" Naamruimte="Microsoft.SharePoint.WebControls" Vergadering="Microsoft.SharePoint, Weergawe = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Lewering Sjabloon ID="XYZZYCorporateLocationFieldControl" runat="server">
<Sjabloon>
<ASP:DropDown List ID="XYZZYCorporateLocationSelector" runat="server" />
</Sjabloon>
</
SharePoint:Lewering Sjabloon>

Die bogenoemde is gered in c:\program lêers algemene lêers Microsoft gedeelde web bediener uitbreidings 12 controltemplates.

  1. Ten slotte, skep ons 'n XML lêer te stoor in die ..... 12 XML Gids. Dit is CAML te verduidelik dat ons persoonlike data tipe en vir my voorbeeld, lyk soos hierdie:

<?xml weergawe="1.0" encoding="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Field Naam="Type Name">CorporateLocations</Field>
<
Field Naam="ParentType">Teks</Field>
<
Field Naam="TypeDisplayName">Corporate Locations</Field>
<
Field Naam="TypeShortDescription">All XYZZY Corporate locations including manufacturing or other facilities.</Field>
<
Field Naam="UserCreatable">WAAR</Field>
<
Field Naam="ShowInListCreate">WAAR</Field>
<
Field Naam="ShowInDocumentLibraryCreate">WAAR</Field>
<
Field Naam="ShowInSurveyCreate">WAAR</Field>
<
Field Naam="ShowInColumnTemplateCreate">WAAR</Field>
<
Field Naam="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Weergawe = 1.0.0.0, Culture = neutral, PublicKeyToken=b0b19e85410990c4</Field>
<
RenderPattern Naam="DisplayPattern">
<
Skakel>
<
Expr>
<
Kolom />
</
Expr>

<Geval Waarde=""/>

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

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

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

</
Default>
</
Skakel>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" en pas dit op teen die GAC'd vergadering.

Na beweeg al hierdie stukkies in plek, iisreset op die bediener en dit moet almal begin werk mooi.

WSS: Tegniek vir die skep van CAML veld definisies.

Bykomende kategorie: CAML

Hier is a great posting by a fellow named "craig" op 'n tegniek vir die vind van CAML definisies vir veld inhoud tipes grond af real live definisies van 'n webwerf.

Sy plaas sê dit alles. In kort:

  1. Skep 'n tipe inhoud.
  2. Assosieer dit met 'n lys.
  3. Oop te maak die lys met SharePoint Designer.
  4. Export to a "personal web package".
  5. Hernoem na 'n. Kajuit.
  6. Haal die openbaar.
  7. Vind jou inhoud tipe en gepaardgaande CAML.

WSS: Opsomming stappe nuttige funksies / elemente / ens in staat te stel. IntelliSense in VS 2005

Bykomende kategorieë: Visual Studio 2005

Nuttige IntelliSense staat te stel om vir funksies, elemente, ens in Visual Studio 2005:

  1. Toegang tot 'n WSS bediener.
  2. Navigate to "c:\program lêers algemene lêers Microsoft gedeelde web bediener uitbreidings 12 TEMPLATE XML"
  3. Open 'n ander Windows Explorer wys na: "C:\Program Files Microsoft Visual Studio 8 Xml Schemas"
  4. Kopieer die volgende lêers van die WSS bediener aan jou VS 2005 skemas Gids:
    1. Wss.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Herlaai VS 2005
  6. Voeg 'n nuwe XML-lêer na 'n projek.
  7. Klik in die liggaam van die XML-lêer.
  8. In die eiendomme paneel, click on "Schemas" and pick "wss.xsd" uit die keuses. (Dit is nie nodig om ander se xsd te kies omdat hulle gekla van wss.xsd).

IntelliSense is nou in staat gestel om vir die XML-dokument.

Sien hier Vir meer inligting oor hierdie onderwerp en vir instruksies oor hoe om outomaties assosieer WSS IntelliSense met enige XML-lêer.

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

Ek het en geslaag het in die bogenoemde toets vanoggend. Ek het gevind dat die eksamen te moeilik wees en regverdig.

Daar is 'n relatiewe gebrek aan inligting oor hierdie eksamen op die web. Ek is nie seker hoekom.

Ek het natuurlik sal nie in enige detail oor die eksamen het ek, maar ek dink ek kan sê die volgende:

  1. Vertrou dat hierdie skakel: http://www.microsoft.com/learning/exams/70-541.mspx.

    Dit bevat 'n lys wat jy nodig het om te weet om die eksamen te slaag, en dit is, IMO, baie akkuraat.

  2. Die skakel beveel ook aan Binne-in Microsoft Windows SharePoint Services 3.0 deur Ted Pattison & Daniel Larson. Hierdie boek dek byna al die vakke wat die toets spreek. Ek het gevind dat dit te groot wees in en van die self as eenvoudige eksamen prep. Dit bied 'n groot voorbeelde en het my regtig te dink oor 'n paar nuwe en interessante dinge te probeer. As jy wil 'n paar stukkies in die boek oor te slaan, net kruisverwysing die boek se TOC met die items in die verband van bo.
  3. Niks klop werklike praktiese ervaring. As jy tyd en rente, volg saam met die voorbeelde in die boek en dan eksperimenteer met hulle. Jy het 'n makliker tyd op die eksamen sowel as werklik leer WSS application programming.

</einde>Skryf in op my blog!

MOSS / Path Vorms Server (Path 2007) drop-down list prestasie

Bykomende kategorie: Path

Opsomming: 'N Path 2007 vorm ontplooi om 'n mos-bediener bied 'n drop-down lys van verskaffers wat gekoppel is aan 'n persoonlike MOSS lys. By die keuse van 'n verskaffer, reëls toewys veld waardes aan 'n handvol van die teks velde, soos verkope rep naam, adres, stad, staat, rits en telefoonnommer. Prestasie is verskriklik. Ons sien dat prestasie erger (in 'n nie-lineêre mode) vir elke bykomende veld ons werk op hierdie manier. Dws, as ons net werk om die verkope rep naam, dit neem [x] bedrag van die tyd. As ons werk sales rep, Adres1, Adres2, stad, staat, ritssluiter, dit neem 10 keer langer.

Oplossing: Skryf 'n web-diens (voorbeeld kode kan gevind word hier) wat geslaag het in die naam van 'n ondernemer en dit gee terug die verkoper besonderhede. Toe, ken die velde op hierdie manier. Hoewel dit lyk te stadig, Daar was geen waarneembare verskil in prestasie wanneer ons opgedra 1 gebied versus 8 velde. As 'n ekstra bonus, users get a cool "contacting the server" Cylon effek, terwyl hulle wag vir die vorm te roep en verteer die diens resultate.

MOSS: Uitsondering het voorgekom. (Uitsondering van HRESULT: 0x80020009 (DISP_E_EXCEPTION))

UPDATE: Ons het nooit die oorsaak van die probleem bepaal, en dit nooit weer opduik.

Ons sien tydens die implementering van 'n ontwikkeling wat skielik, twee gebruikers is nie in staat om toegang te verkry tot 'n webwerf versameling. Hierdie rekeninge kan kontroleer na die hoof webwerf, maar wanneer ek probeer om 'n bepaalde werf-versameling om toegang te verkry tot, hulle het net 'n leë skerm. Geen foute word vertoon, net 'n wit leë bladsy.

Ons teken as 'n tuiste versameling admin en probeer om een ​​van die gebruikers by te voeg as 'n site admin en hierdie tyd, op druk "OK", ons kry hierdie boodskap:

Uitsondering het voorgekom. (Uitsondering van HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Ons het geruime tyd ondersoek en ongelukkig, het nie kom met iets nuttigs. Daar was 'n paar boodskappe in die diagnostiese log, maar dit was moeilik om presies ooreen met hierdie kwessie.

Op die ou end, ons die verwydering van die werf versameling en weer geskep is en wat opgelos.

As ek uitvind wat dit veroorsaak in die toekoms, Ek sal hierdie pos werk.