Měsíční archivy: Srpen 2007

MOSS pokročilé úpravy vyhledávání — Případ záleží v rozšířeném hledání XSLT

Nechci měnit rozšířené hledání XSLT velmi často, tak vypadá to, že stoupám malé kopce pokaždé.

Moje nejnovější lekce je to: Záleží při odkazu na sloupec. V mém pokročilém vyhledávání, Já mít sloupce definovány jako:

<kořen xmlns.:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
Sloupce>
<
Sloupec Jméno="GafTrainingInvoiceNumber" />
<
Sloupec Jméno="GafTrainingInvoiceLocation" />
<
Sloupec Jméno="WorkId"/>
<
Sloupec Jméno="Pořadí"/>
<
Sloupec Jméno="Titul"/>
<
Sloupec Jméno="Autor"/>
<
Sloupec Jméno="Velikost"/>
<
Sloupec Jméno="Cesta"/>
<
Sloupec Jméno="Popis"/>
<
Sloupec Jméno="Zápis"/>
<
Sloupec Jméno="Název serveru"/>
<
Sloupec Jméno="CollapsingStatus"/>
<
Sloupec Jméno="HitHighlightedSummary"/>
<
Sloupec Jméno="HitHighlightedProperties"/>
<
Sloupec Jméno="ContentClass"/>
<
Sloupec Jméno="IsDocument"/>
<
Sloupec Jméno="PictureThumbnailURL"/>
</
Sloupce>
</
kořen>

XLST, zobrazující umístění faktury číslo a faktura byla:

<p>
Číslo faktury školení: <XSL:hodnota z vybrat="GafTrainingInvoiceNumber"/>
<
BR></BR>
Místo faktury vzdělávání: <XSL:hodnota z vybrat="GafTrainingInvoiceLocation"/>
</
p>

Avšak, select musí odkazovat na vlastnost všech malými písmeny, stejně jako v:

<p>
Číslo faktury školení: <XSL:hodnota z vybrat="gaftraininginvoicenumber"/>
<
BR></BR>
Místo faktury vzdělávání: <XSL:hodnota z vybrat="gaftraininginvoicelocation"/>
</
p>


Dokud jsem se opravil, výsledky hledání ukázal štítky (tj. "Číslo faktury školení") ale žádná data.

MECH: Funkční příklad – vlastní datový typ

Obchodní scénář:

Celopodnikové implementace Moss pro výrobní společnosti s 30+ sítě a pár desítek firemních oddělení.

Předmět podnikání:

I přes velké množství obchodních skupin (oddělení, umístění, atd), některé údaje by měla být udržována na globální úrovni. Například, autoritativní hlavní seznam všech fyzické umístění firmy (např.. výrobní zařízení, skladových lokací, prodejní kanceláře) by měl být zachován v centrálním umístění.

Technický problém:

Taxonomie organizace byl realizován pomocí více kolekcí webů. Bychom si přáli vytvořit autoritativní seznam fyzické umístění v seznamu vlastní WSS. Pak, Když jsme potřebovali mít sloupce typu obsahu (nebo sloupec do seznamu nebo dokumentu knihovny) který obsahoval místech firmy, Vytváříme sloupec pomocí vyhledávání"" datový typ a poukazují na tento hlavní seznam.

Bohužel, datové typy vyhledávání musí mít přístup k seznamu zdroj "místně" což znamená, že náš autoritativní seznam nemůže zahrnovat kolekce webů.

Technické řešení:

Zavést nový vlastní datový typ implementována na základě SPField a jako DropDownList v uživatelském rozhraní, jehož položky ListItems naplnit z hlavního seznamu WSS.

Vytvořili jsme novou kolekci webů, které se nazývá "http://localhost/EnterpriseData". Tam, vytvořili jsme vlastní seznam s názvem "Firemní místa". Tento seznam používá standardní titul"" pole obsahující seznam skutečných místech firmy.

Jeden následuje několik samostatných kroků k vytvoření vlastní datový typ v WSS. Jsou to:

  1. Definujte třídu, která dědí z SPField (jeden může zdědit z jiných oborů, dle potřeby).

Zde je kód, který:

veřejné Třída XYZZYCorporateLocationField : SPFieldText
{
veřejné XYZZYCorporateLocationField
(Třídy SPFieldCollection pole, řetězec typeName, řetězec displayName)
: základna(pole, typeName, displayName) { }

veřejné XYZZYCorporateLocationField
(Třídy SPFieldCollection pole, řetězec displayName)
: základna(pole, displayName) { }

veřejné přepsat BaseFieldControl FieldRenderingControl
{
získat
{
BaseFieldControl ovládací prvek = nové XYZZYCorporateLocationFieldControl();
ovládací prvek. Název = to.InternalName;
návrat ovládací prvek;
} //získat
} // fieldrenderingcontrol

veřejné přepsat řetězec GetValidatedString(objekt hodnota)
{
Pokud (to.Požadováno || hodnota. ToString().Rovná se(Řetězec.Prázdný))
{
hod nové SPFieldValidationException ("Oddělení není přiřazeno.");
}
návrat základna.GetValidatedString(hodnota);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Definovat další třídu, která dědí z ovládacího prvku základní pole, stejně jako v:

veřejné Třída XYZZYCorporateLocationFieldControl : BaseFieldControl
{
chráněná DropDownList XYZZYCorporateLocationSelector;

chráněná přepsat řetězec DefaultTemplateName
{
získat
{
návrat "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

veřejné přepsat objekt Hodnota
{
získat
{
EnsureChildControls();
návrat to.XYZZYCorporateLocationSelector.SelectedValue;
} // získat
nastavit
{
EnsureChildControls();
to.XYZZYCorporateLocationSelector.SelectedValue = (řetězec)to.ItemFieldValue;
} // nastavit
} // přepsat objekt hodnoty

chráněná přepsat void CreateChildControls()
{

Pokud (to.Pole == null || to.ControlMode == SPControlMode.Displej)
návrat;

základna.CreateChildControls();

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

Pokud (to.XYZZYCorporateLocationSelector == null)
hod nové Výjimka("CHYBA: Nelze načíst. Soubor ASCX!");

Pokud (!to.IsPostBack)
{

použití (SPSite místo = nové SPSite("http://localhost/enterprisedata"))
{
použití (SPWeb webové stránky =. OpenWeb())
{

SPList.Update() currentList = www. Seznamy["Firemní místa"];

foreach (SPItem XYZZYCorporateLocation v currentList.Items)
{
Pokud (XYZZYCorporateLocation["Titul"] == null) «««;

řetězec znázorňující pole název;
znázorňující pole název = XYZZYCorporateLocation["Titul"].ToString();

to.XYZZYCorporateLocationSelector.Items.Add
(nové ListItem(znázorňující pole název, znázorňující pole název));

} // foreach

} // použití webu spweb = site.openweb()
} // pomocí webů spsite = nové spsite("http://localhost/enterprisedata")

} // ne-li zpětné volání

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Výše uvedený kód v podstatě implementuje logiku pro vyplnění DropDownList s hodnotami z vlastního seznamu WSS na http://localhost/enterprisedata a s názvem "podnikové oddělení".

Jsem obě třídy definované v jediné .cs souboru, při kompilaci a dát ji do GAC (silné požadováno, Samozřejmě).

  1. Implementace šablony ovládacího prvku (.ascx) Jak je uvedeno:

<%@ Ovládací prvek Jazyk= "C#" Dědí="Microsoft.SharePoint.Portal.serveradmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Verze = 12.0.0.0, kultura = neutral,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Vždy" %>
<%
@ Registrace Tagprefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" Montáž="Microsoft.SharePoint, Verze = 12.0.0.0, Kultura = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Registrace Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Montáž="Microsoft.SharePoint, Verze = 12.0.0.0, Kultura = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Šablonu vykreslování pro ID= "XYZZYCorporateLocationFieldControl" runat= "server">
<Šablona>
<prostředí ASP:DropDownList ID= "XYZZYCorporateLocationSelector" runat= "server" />
</Šablona>
</
SharePoint:Šablonu vykreslování pro>

Výše uvedené je uložena do c:\Program filescommon filesmicrosoft sharedweb server extensions12controltemplates.

  1. Konečně, vytvoříme soubor XML k uložení do... 12XML adresář. To je CAML, který definuje naše vlastní datový typ a pro můj příklad, Vypadá to, že to:

<?XML verze="1.0" kódování="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Pole Jméno="TypeName">CorporateLocations</Pole>
<
Pole Jméno="ParentType">Text</Pole>
<
Pole Jméno="TypeDisplayName">Firemní místa</Pole>
<
Pole Jméno="TypeShortDescription">Všechna firemní XYZZY umístění včetně výrobní nebo jiné zařízení.</Pole>
<
Pole Jméno="UserCreatable">PRAVDA</Pole>
<
Pole Jméno="ShowInListCreate">PRAVDA</Pole>
<
Pole Jméno="ShowInDocumentLibraryCreate">PRAVDA</Pole>
<
Pole Jméno="ShowInSurveyCreate">PRAVDA</Pole>
<
Pole Jméno="ShowInColumnTemplateCreate">PRAVDA</Pole>
<
Pole Jméno="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Verze = 1.0.0.0, Kultura = neutral, PublicKeyToken = b0b19e85410990c4</Pole>
<
RenderPattern Jméno="DisplayPattern">
<
Spínač>
<
Výraz>
<
Sloupec />
</
Výraz>

<Případ Hodnota=""/>

<Výchozí>
<
HTML>
<![CDATA[
<span style = "color:Červená"><b>]]>
</
HTML>

<
Sloupec SubColumnNumber="0" HTMLEncode="PRAVDA"/>

<HTML><![CDATA[</b></rozpětí>]]></HTML>

</
Výchozí>
</
Spínač>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Tento XML soubor přidá vlastní datový typ WSS "knihovna" a zápasy proti GAC měli shromáždění.

Po přesunutí všech těchto bitů na místo, iisreset na serveru a to by všichni začneme pěkně pracovat.

WSS: Technika pro vytvoření definice polí CAML.

Další kategorie: CAML

Tady je skvělý zaúčtování podle chlapík jménem "craig" na techniku pro nalezení CAML definice pro pole typy obsahu založené mimo live definice z webu.

Jeho vyslání mluví za vše. Ve zkratce:

  1. Vytvořit typ obsahu.
  2. Přidružit seznam.
  3. Otevřít seznam SharePoint Designer.
  4. Exportovat do "balíčku personal web".
  5. Přejmenovat na soubor CAB.
  6. Preview manifest.
  7. Najít typ obsahu a související CAML.

WSS: Souhrnné kroky, aby umožnily užitečné funkce/prvky/etc. Technologie IntelliSense v VS 2005

Další kategorie: Visual Studio 2005

Povolení technologie intellisense užitečných funkcí, prvky, atd v aplikaci visual studio 2005:

  1. Přístup k serveru WSS.
  2. Přejděte do "c:\Program filescommon filesmicrosoft sharedweb server extensions12TEMPLATEXML"
  3. Spusťte jiný program Průzkumník Windows přejdete: "C:\Program FilesMicrosoft Visual Studio 8XmlSchemas"
  4. Zkopírujte následující soubory ze serveru WSS do vaší VS 2005 schémata adresář:
    1. WSS.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Restartovat VS 2005
  6. Přidejte do projektu nový soubor XML.
  7. Klepněte do textu ze souboru XML.
  8. V podokně vlastnosti, klikněte na "schémata" a vybrat "wss.xsd" od volby. (To není nutné zvolit jiné xsd, vzhledem k tomu, že jsou odkazovány z wss.xsd).

Pro tento dokument XML je nyní povolena technologie IntelliSense.

Viz Tady Další informace o tomto tématu a pokyny o jak automaticky přiřadit WSS intellisense s jakýkoliv XML souboru.

WSS zkouška 70-541, Služby Microsoft Windows SharePoint Services 3.0 – Vývoj aplikací

Vzal a výše uvedené zkoušky ráno. Našel jsem na zkoušku obtížné a spravedlivé.

Je relativní nedostatek informací o této zkoušky na webu. Nejsem si jistý proč.

Zřejmě nedostane do všech detailů o zkoušku, kterou jsem si vzal, ale myslím, že můžu klidně říci následující:

  1. Důvěřovat tento odkaz: http://www.microsoft.com/learning/exams/70-541.mspx.

    Je to seznam, co potřebujete vědět, aby se složit zkoušku a to, IMO, velmi přesné.

  2. Odkaz také doporučuje Uvnitř Microsoft Windows SharePoint Services 3.0 od Ted Pattison & Daniel Larson. Tato kniha pokrývá téměř všechny předměty, které řeší test. Našel jsem to skvělý samo o sobě za jednoduchou zkoušku prep. Poskytuje skvělé příklady a opravdu mě přemýšlet o nějaké nové a zajímavé věci vyzkoušet. Pokud chcete přeskočit několik bitů v knize, jen křížový odkaz obsah knihy s položkami v odkazu z výše.
  3. Nic nepřekoná aktuální praktické zkušenosti. Pokud máte čas a zájem, postupovat podle příkladů v knize a pak experimentovat s nimi. Vám bude mít snazší na zkoušku, tak opravdu učit programování aplikací WSS.

</Konec>Přihlásit se na mém blogu!

MECH / Aplikace InfoPath Forms Server (Aplikace InfoPath 2007) Rozevírací seznam výkon

Další kategorie: Aplikace InfoPath

Shrnutí: Aplikace InfoPath 2007 formuláře na MOSS server nabízí rozevírací seznam dodavatelů k vlastní seznam MOSS. Při výběru dodavatele, pravidla pole hodnoty přiřadit několik textových polí, například jméno obchodního zástupce, adresa, město, stát, zip a telefon. Výkon je hrozné. Všimněte si, že jsme horší výkon (v non-lineárně) pro každé další pole budeme aktualizovat tímto způsobem. Tj, kdybychom prostě aktualizovat název obchodního zástupce, to trvá [x] množství času. Pokud budeme aktualizovat obchodní zástupce, Address1, adresa2, město, stát, zip, to trvá 10 krát delší.

Řešení: Psát webové služby (Ukázkový kód lze nalézt Tady) To je předán název dodavatele a vrátí zpět detaily dodavatele. Pak, přiřadit pole tak. Ačkoliv se to zdá příliš pomalu, neexistoval viditelnému rozdíl ve výkonu, když jsme přiřadili 1 pole versus 8 pole. Jako bonus, Uživatelé si cool "kontaktování serveru" Cylon účinek, zatímco oni čekají na formuláři pro vyvolání a konzumovat služby výsledky.

MECH: Došlo k výjimce.. (Výjimka z HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

AKTUALIZOVAT: Nikdy jsme znovu určit příčinu tohoto problému a to nikdy povrchu.

Jsme si tak náhle během zavádění vývoj webu, dva uživatelé nebudou moci získat přístup kolekci webů. Tyto účty lze ověřit na hlavní stránku, Ale při pokusu o přístup k určité webů kolekce, dostanou jen prázdná obrazovka. Žádné chyby, jen bílý prázdná stránka.

Jsme se přihlásit jako správce kolekce webů a pokusíte se přidat jeden z těchto uživatelů jako správce webu a tentokrát, po stisknutí "OK", dostaneme zprávu:

Došlo k výjimce.. (Výjimka z HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Jsme strávili nějaký čas to zkoumá a bohužel, Nechtěl přijít s něčím užitečné. Tam byly nějaké zprávy v protokolu diagnostiky, Ale bylo to těžké přesně sladit je s tímto problémem.

Na konci, jsme odstraněním kolekce webů a znovu a to, že to vyřešili.

Pokud jsem přijít na to, co způsobilo to v budoucnosti, Budu aktualizovat tento post.