Archivy kategorií: Rozvoj služby SharePoint

Jednoduché vysvětlení: “Hodnota nespadá do očekávaného rozsahu.”

AKTUALIZOVAT: Anonymní plakát odešel skvělý komentář o interní názvy. Přečtěte si ji.

Při práci s přijímačů událostí a další kód, který odkazuje na položky seznamu SharePoint prostřednictvím objektového modelu, Často dělají chyby, které generují tuto chybu za běhu:

Chyba při načítání a spouštění událostí přijímač Conchango.xyzzyEventReceiver v xyzzy, Verze = 1.0.0.0, Kultura = neutral, PublicKeyToken = 0dc50a750396c3ac. Další informace jsou nižší než. : Hodnota nespadá do očekávaného rozsahu.

Myslím, že to je poměrně obecná chyba, která je potenciálně způsobené mnoha různými způsoby. Avšak, jedno jednoduché vysvětlení je, že já jsem odkazující pole nesprávně. Je-li název pole "Datum splatnosti", Musí odkazovat takhle v příjemce události:

vlastnosti.ListItem["Termín"]

Když chybně nebo špatný případ použití při odkazování na pole, SharePoint generuje výše uvedená Chyba runtime. Například, To je špatně:

vlastnosti.ListItem["termín"]

</Konec>

Přihlásit se na mém blogu.

Doplněk Technorati značky:

Rychlé & Snadné: Vytvořte složku a přiřadit typ obsahu (Nebo, Mají své ukazatele KPI a sníst je příliš)

K problému KUV Psal jsem o tu, Jsem udělal nějaké testy a zjistil že KPI práce proti složky s meta data stejným způsobem, že proti dokumenty nebo položky seznamu. Dokázal jsem to tím, že vytvoří nový typ obsahu založený na obsahu typu složky a pak přidal několik polí. Jsem vytvořil některé ukazatele a dokázal jsem si, že klíčové ukazatele výkonu fungovat podle očekávání. To bylo vítanou zprávou. Není to dokonalé, vzhledem k tomu, že přechod se dostanete od KUV proti složek je přesně, co chcete. To není příliš mnoho nevýhodou, v mém případě, protože 1) koncoví uživatelé nevědí nic lepšího a 2) přechod se přejde do složky. Klepnutí na název složky a jsou na položku. Je to dvě kliknutí místo jedné, která není konec světa.

To tekla pěkně s prací, kterou jsem dělal. Já jsem vytvořit složku pro každý dokument, který dostane nahrané. To se provádí prostřednictvím příjemce události. Jako výsledek, je to hračka, aby nadřazená složka Meta data synchronizovaná s KUV řízené metadata ze souboru, samotná instalace je již na místě. This allows me to have my KPI’s and eat them too 🙂

Upravil jsem přijímač událostí přidat složku a potom nastavit typ obsahu této nové složky na můj vlastní typ obsahu KPI-přátelské. Tento kousek kódu udělal trik:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Dokumenty").Podsložky;
  Složka SPFolder addedFolder = srcFolders.Add(vlastnosti.ListItem.ID.ToString());
  SPContentTypeId kpiCT = nové SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["ID typu obsahu"] = kpiCT;
  addedFolder.Item.Update();

Chcete-li najít skutečné ID typu obsahu, Přístup k typu obsahu prostřednictvím nastavení webu a kopírovat/vložit jej z adresy URL, jak je uvedeno:

obrázek

</Konec>

Přihlásit se na mém blogu!

Doplněk Technorati značky: ,

Rychlé a snadné: Si SPFolder SPListItem v události přijímač

Nerad to přiznávám, ale jsem bojoval s tímto všechny den. Můj přijímač událostí je třeba aktualizovat pole nadřazené složky. To trochu ukazuje, jak na to:

soukromé void UpdateParentFolder(SPItemEventProperties vlastnosti)
{

Složka SPFolder thisItemFolder = vlastnosti.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ stav schválení"] = "Dobré zprávy, Každý!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

V tomto případě, Já pracuji s knihovnou dokumentů a vlastnosti, které jsou zasílány z události ItemAdded.

Trik je, že nemůžete získat složka SPFolder položky přímo ze samotné položky (tj. vlastnosti.ListItem.Folder je null). Místo toho, Přejděte na položky seznamu přidružený soubor a získat složku v souboru.

</Konec>

Přihlásit se na mém blogu!

Doplněk Technorati značky:

Ještě další událost přijímač ladit trik

Jsem si jistý, že nejsem první, kdo přišel s tímto. Avšak, Nevšiml jsem si někdo zveřejnit jako je tento trik, vzhledem k tomu, že jsem se začal věnovat bedlivou pozornost do Společenství loni v červenci. Tak, Myslel jsem, že by ji zaúčtovat tento tip rychlé a snadné ladění.

Já jsem pracoval na přijímač událostí, který začal generovat tuto chybu v 12 podregistr:

Chyba při načítání a spouštění událostí přijímač Conchango.xyzzyEventReceiver v xyzzy, Verze = 1.0.0.0, Kultura = neutral, PublicKeyToken = blahbalhbalh. Další informace jsou nižší než. : Odkaz na objekt není nastaven na instanci objektu.

Nevěděl jsem, kde jsem zavedla tuto chybu, protože jsem udělal příliš mnoho věcí v jednom z mých kód/zavádění/zkušebních cyklů.

Snažil jsem se Toto řešení Chcete-li získat své pdb tam s nadějí, že SharePoint 12 úl by zobrazit trasování zásobníku, ale zase nic. Nevím, jestli je to možné, a pokud někdo nemá, Dejte mi prosím vědět 🙂

Já vím, že je to možné psát vlastní zprávy protokolu do 12 podregistr. Upřímně řečeno, Chtěl jsem něco trochu méně děsivé a rychlejší implementace.

Napadlo mě, že bych mohl dostat alespoň nějaké základní trasovací informace lov a opětné vyvolání obecné výjimky, jako je tento:

  zkusit {
    UpdateEditionDate(vlastnosti);
  }
  Catch (Výjimka e)
  {
    hod nové Výjimka("Dispečer, UpdateEditionDate(): Výjimka: [" + e.ToString() + "].");
  }

To se objevil v 12 thusly úl:

Chyba při načítání a spouštění událostí přijímač Conchango.xyzzyEventReceiver v xyzzy, Verze = 1.0.0.0, Kultura = neutral, PublicKeyToken = blahblahblah. Další informace jsou nižší než. : Dispečer, UpdateEditionDate(): Výjimka: [System.NullReferenceException: Odkaz na objekt není nastaven na instanci objektu. na Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties vlastnosti) na Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties vlastnosti, Řetězec eventDescription)].

To mi dal všechny detaily, které jsem potřeboval, aby vypátral, že konkrétní problém a očekávám, že ji hodně do budoucna používat.

</Konec>

Přihlásit se na mém blogu!

Řešení: SPQuery neprohledává složky

Minulý týden jsem se provádí "vyvíjející se" řešení pro klienta, který používá BDC a SPQuery a narazil na nějaké potíže s používáním SPQuery proti knihovnu dokumentů obsahující složky. Čára dole: přiřadit "rekurzivní" do atributu zobrazení dotazu.

Můj scénář:

  • V pondělí, Uložit dokument a některé údaje meta.
  • Následující týden, Nahrát nový dokument. Velká část tohoto nového dokumentu meta dat je založen na dokumentu, který jsem nahrál v pondělí (kterou nazýváme "hlavní dokument").
  • Vytvořili jsme webové služby fasáda, která poskytuje BDC-přátelské rozhraní, do seznamu, takže uživatelé mohou snadno vyhledat dokument pondělí přes hledání v titulech.
  • Sloupec dat záložní řadič domény poskytuje přehledné uživatelské rozhraní. (To je součástí můj pokus o použití služby BDC pro vyhledávací sloupec s více přátelské).

Konečné fasádě služby BDC používá dotaz takto udělat vyhledávání:

 // Používá U2U nástroj k pomoci při vytváření tento dotaz CAML.
      oQuery.Query =
        "<Kde>";

      Pokud (titleFilter.Length > 0)
        oQuery.Query  =
          "  <A>";

      oQuery.Query  =
        "    <A>" +
        "      <GEQ>" +
        "        <FieldRef jméno =  "DocumentId" />" +
        "        <Typ hodnoty =  "Text">" + minId + "</Hodnota>" +
        "      </GEQ>" +
        "      <LEQ>" +
        "        <FieldRef jméno =  "DocumentId" />" +
        "        <Typ hodnoty =  "Text">" + maxId + "</Hodnota>" +
        "      </LEQ>" +
        "    </A>";

      Pokud (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Obsahuje>" +
          "      <FieldRef jméno =  "Title" />" +
          "      <Typ hodnoty =  "Text">" + titleFilter + "</Hodnota>" +
          "    </Obsahuje>" +
          "  </A>";
      oQuery.Query  =
        "</Kde>";

V počáteční fázi vývoje, fungovalo to skvěle. Avšak, Zavedli jsme složky do adresáře k řešení některých problémů a najednou, můj výběr záložní řadič domény nevrátí žádné výsledky. Sledoval jsem to se skutečností, že SPQuery by se nikdy nevrátí žádné výsledky. Zvykli jsme si složky především umožnit více souborů se stejným názvem a uložit, ale s různými meta data. Když je soubor odeslán, vytvořit složku založený na ID položky seznamu a potom přesuňte soubor tam (Jsem psal o tom Tady; Měli jsme smíšené výsledky s tímto přístupem, ale na celém, funguje to dobře). Uživatele nezajímá, o složkách a ve skutečnosti, nechápe, že jsou všechny složky. Jsme nakonfigurovali názory na knihovnu zobrazíte položky bez ohledu na složky.

Trefil jsem tento problém dvakrát jako technická realizace vyvinul a řešit to jinak pokaždé. První čas, Nebyl pomocí operátoru CONTAINS v dotazu. Bez operátor CONTAINS, Byl jsem schopen problém vyřešit zadáním pohled na contructor SPQuery. Namísto použití výchozí konstruktor:

SPList.Update() oList = www.Seznamy["Dokumenty"];

SPQuery oQuery = nové SPQuery();

Namísto toho používá konstruktor, který zadaný pohled:

SPList.Update() oList = www.Seznamy["Dokumenty"];

SPQuery oQuery = nové SPQuery(oList.Views["Všechny dokumenty"]);

Problém vyřešil a začal jsem se dostat moje výsledky.

Pak jsem přidal operátor CONTAINS do směsi a zlomil znovu. Ukazuje se, že operátor CONTAINS, Co lze říci, nefunguje s názorem stejným způsobem jako jednodušší GEQ / LEQ operátory. Jsem udělal nějaké vyhledávání a zjistil, že ViewAttributes dotazu by měla být nastavena na "Rekurzivní", stejně jako v:

oQuery.ViewAttributes = "Rozsah = "Recursive"";

To vyřešil problém pro obsahuje. Vlastně, to také vyřešil můj původní problém hledání a pokud byl zadán rekurzivní atribut poprvé, Já bych se do problematiky znovu spustit.

Skutečnost, že podle zobrazení SPQuery funguje u některých operátorů (GEQ/LEQ) a jiné ne (OBSAHUJE), spolu s tím, že ukazatele KPI nezdá se, že práci vůbec s obsahující složku dokumentů knihovny vede mě věřit, že SPQuery má nějaké problémy, ortogonalita.

Zvláštní poděkování:

  • Dobrý lidi na U2U a nástroj pro dotazy na jejich.
  • Michael Hoffer je skvělá "učení se praxí" blogu, Komentáře a reakce.

</Konec>

Přihlásit se na mém blogu!

MOSS KPI chyba? Ukazatel seznamu vázáno do knihovny dokumentů se složkami

AKTUALIZOVAT 02/29/08: Já jsem tento problém řešil vytvořením složky a potom přiřadí typ obsahu do složky, která má meta data, potřebná pro ukazatele KPI. Jsem popsal, že v trochu podrobněji zde.

Zavedli jsme technické řešení, kde uživatelé předávat dokumenty do knihovny dokumentů. Příjemce události vytvoří adresář a přesune soubor do tohoto adresáře (pomocí techniky podobné co jsem psal o Tady). Jsme úspěšně procházet kolem potenciální problémy způsobené přijímačů událostí přejmenovat soubory (hlavně proto, že uživatelé nikdy začít jejich dokument klepnutím na tlačítko na "New" ale místo toho vytvořit dokumenty místně a pak je současně Odeslat).

Meta data pro tyto dokumenty obsahují ano/ne sloupec webu s názvem "Urgent" a další sloupec webu s názvem "Status". Musíme splnit obchodní požadavky, ukazuje procento "Urgent" dokumenty, jejichž stav je "Čekající".

To je obvykle jednoduché udělat a popsal jsem něco velice podobného na SharePoint Beagle se spoustou snímky obrazovky, pokud máte zájem.

V kostce, Jsem udělal následující:

  • Vytvoření zobrazení na knihovně dokument nazvaný "Čekající".
  • Nastavit pohled ignorovat strukturu složek.
  • Vytvořit seznam klíčových ukazatelů výkonu.
  • Vytvoření ukazatele v seznamu, který odkazuje na doc lib a že "čeká na vyřízení" pohled.

To prostě nebude fungovat. Klíčový ukazatel výkonu ukazuje můj cíl (např.. pět urgentní dokumenty) ale vždy zobrazuje skutečný počet naléhavých jako nula. Paradoxně, Pokud přejdete na detaily, To ukazuje pět urgentní dokumenty v seznamu. Vytvořil jsem jednoduchý scénář s dvěma dokumenty, ve složce a jeden ne. Zde je screen shot:

obrázek

Výše uvedená ukázka jasně ukazuje, že existují dva dokumenty v pohledu, ale hodnota"" je jedna. "CamlSchema" s prázdným dokumentem Id je v kořenové složce a druhá je ve složce s názvem "84".

Zdá se mi, že i když zadáte pohled, KUV není dodržena, "Zobrazit všechny položky bez složek" nastavení a místo, omezuje na kořenovou složku.

Pokud se mýlím, Prosím napište mi linku, nebo zanechat komentář.

</Konec>

Přihlásit se na mém blogu!

Doplněk Technorati značky:

Řešení problému: “FileNotFoundException” S mou funkci přijímače.

Pracoval jsem na funkci minulý týden, který by přidat některé přijímače události k určitému seznamu instance. (Jsem blogged trochu o tento seznam přijímač).

Pomocí příkazového řádku, Mohl nainstalovat funkci se k žádné chybě. (Ale viz níže pro skryté chyby). Když jsem se snažil zavést funkci na webu, MOSS stěžovali na "FileNotFoundException" Chyba. Tato položka blogu popisuje, jak jsem to vyřešil.

To je chyba, že MOSS mi ukázal ve webovém prohlížeči:

Funkce ' b2cb42e3-4f0a-4380m 1ef9cd526f20’ nelze nainstalovat, protože načtení sestavení příjemce události "xyzzyFeatureReceiver_0" se nezdařilo.: System.IO.FileNotFoundException: Nelze načíst soubor nebo sestavení ' xyzzyFeatureReceiver_0’ nebo některý z jeho závislostí. Systém nemůže najít zadaný soubor.
Název souboru: ' xyzzyFeatureReceiver_0’
na System.Reflection.Assembly.nLoad(AssemblyName název_souboru, Řetězec codeBase, Důkaz assemblySecurity, Sestavení locationHint, StackCrawlMark& stackMark, Logické throwOnFileNotFound, Boolean forIntrospection)
na System.Reflection.Assembly.InternalLoad(Odkaz assemblyRef AssemblyName, Důkaz assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
na System.Reflection.Assembly.InternalLoad(AssemblyStringje řetězec, Důkaz assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
na System.Reflection.Assembly.Load(AssemblyStringje řetězec)
na Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Montáž vázání protokolování zapnuto vypnuto.
Chcete-li povolit sestavení vazby selhání protokolování, Nastavte hodnotu registru [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) do 1.
Poznámka:: Existuje nějaké penalizace spojené s shromáždění vazba selhání protokolování.
Chcete-li tuto funkci vypnout, odstranit hodnotu registru [HKLMSoftwareMicrosoftFusion!EnableLog].

Poradce při potížích se službou Windows SharePoint Services.

Já vím, jak se záměrně způsobit tuto chybu: neprovádějte instalaci sestavení v GAC. Ale, bylo to v GAC. Normálně instalovat sestavení do GAC jejich přetažením do c:\windowsassembly složku v Průzkumníku windows. Nikdy jsem se necítil 100% pohodlné, dělají to, protože jsem si vždycky myslel, že gacutil existoval důvod … tak jsem to zkusil. Nic se tím nezměnilo.

Jsem prohledal Internet a našel tento post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Plakát se stalo používat stejný kořen kousek kódu (z knihy uvnitř WSS z tohoto seznamu) tak to bylo znamením naděje. Avšak, návrh zdobení shromáždění s [montáž: ] směrnice nedávalo smysl ke mně. Já zkusil jsem to a měl jsem pravdu. Nic se tím nezměnilo.

Pak jsem si všiml, že moje definice třídy nebyla veřejné. Udělal jsem to veřejnosti a že nic neměnilo.

Další, Šel jsem na potíže povolení "shromáždění vazba selhání protokolu" (po užitečné a přesné instrukce) a to je, kde to začalo být zajímavé. Tento protokol mi ukazuje, že modul runtime hledá všude na tomto serveru pro mé shromáždění. Dokonce se zdá být hledat v mé lékárničce. Ale … to nebude hledat to v GAC.

Dal jsem na zimní bundu a jít hledat internety znovu a zjistit, že má někdo tento problém příliš. Dlouhé diskuse v tomto zveřejnění peters mimo do nicoty a nemůžu najít řešení.

Přesunout své shromáždění do jednoho z míst, které protokolu tvrdí, je hledání a trochu více pokročit. Jsem odměněn novou chybu v prohlížeči, když se pokusím o aktivaci funkce:

Nepodařilo se vytvořit objekt funkce přijímače ze sestavení "xyzzyFeatureReceiver_0", Typ "Conchango.xyzzyFeatureReceiver" pro funkci b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Hodnota nemůže být null.
Název parametru: Typ
v System.Activator.CreateInstance(Typ, Booleovský nonPublic)
v System.Activator.CreateInstance(Typ)
na Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Poradce při potížích se službou Windows SharePoint Services.

Čas na jednu poslední výlet do internety!

Tentokrát jsem zjistit, natolik předvídatelně, MOSS vydává tuto chybu, protože sestavení není v GAC.

Chci si něco pozitivního z toho a snažte se cítit trochu hrdý, že jsem vytvořil Uprchlík sestavení jazyka MSIL, ale to nefunguje. Já jsem prostě naštvaný. Našel jsem mumlal "slepice nebo vejce" pod mým dechem.

Nakonec se rozhodli punt. Jsem vytvořit zcela nový projekt a kopírovat/vložit kód z incredible-cloaked-from-the-GAC-assembly projektu-pracující nad tento nový projekt. (Dívám se na sestavení vlajka s názvem něco jako "Skrýt od vazby, je-li nainstalován v GAC sestavení" ale nemůžu najít).

Funkci nainstalovat a aktivovat a … to funguje! Tak, po tom všem, Musel jsem v podstatě ' znovuzrození’ Můj projekt. To je další důvod, proč nenávidím počítače.

Zjistil jsem něco užitečného z toho. Už byla instalace funkcí pomocí příkazového řádku stsadm celý den a používali "-síla" možnost ze zvyku. Z nějakého důvodu, Nechtěl jsem použít možnost - force když jsem nainstaloval nový projekt. Tentokrát, Vlastně ano, skutečně zapomněl zkopírovat tento nový projekt sestavení v GAC. Jako výsledek, Dostal jsem ten FielNotFoundException"" Chyba. Tentokrát, Mám to od stsadm, Ne, když jsem se snažil aktivovat funkci přes webový prohlížeč. Tak, -síla skutečně hraje dvě role. Umožňuje znovu nainstalovat existující funkce. To také umožňuje nainstalovat buggy funkci, která nemůže fungovat v době běhu potlačením chybu. Asi tolik v nápovědě někde říká, ale nikdy jsem si nevšiml, že.

</Konec>

Doplněk Technorati značky: ,

Rychlé & Snadné: Přejmenovat uploadovaný soubor pomocí SharePoint objektový Model prostřednictvím přijímače události

AKTUALIZOVAT: To funguje, ale existují značné omezení, které jsou popsány v komentářích. Ještě to může být užitečné v některých okolností.

AKTUALIZOVAT 2: V aktuálním projektu, uživatelé vždy uložit dokumenty. Jako výsledek, Nechci běžet na problém kde MS Word je spuštěn a si myslí, že soubor byl přejmenován na něm. Já jsem běžet do problému, "byl soubor změněn jiným uživatelem" a to prostřednictvím jednoduchého semaforu typ příznaku. Uživatelé musí změnit meta datové pole výchozí hodnotu na něco jiného. Itemupdated() přijímač vyhledá platnou hodnotu před jeho skutečným provedením přejmenování a od té doby, Jsem neměl žádné problémy. Váš se může lišit.

Mám požadavek klienta ke změně názvu souborů ukládaných do určité knihovny dokumentů v souladu s konkrétní konvence pojmenování. API neposkytuje přejmenovat"()" Metoda. Místo toho, používáme "MoveTo(…)". Tady je trochu minimální kódu ke splnění tohoto úkolu:

 veřejné přepsat void ItemAdded(SPItemEventProperties vlastnosti)
        {
            Soubor SPFile f = vlastnosti.ListItem.File;

            f.MoveTo(vlastnosti.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Jediná choulostivá je "vlastnosti. ListItem.ParentList.RootFolder.Url". MoveTo() metoda vyžaduje URL. Kaše se řetězec bodů mě kořenové složce mé aktuální knihovny dokumentů. To mi umožňuje vyhnout jakékoliv pevné kódování v mém přijímač událostí.

To je mnohem užitečnější verzi, která dělá totéž, ale přiřadí název souboru "Title":

 veřejné přepsat void ItemAdded(SPItemEventProperties vlastnosti)
        {
            DisableEventFiring();

            // Název této položky přiřadit název souboru.
 // POZNÁMKA:: Toto přiřazení musí proběhnout dříve než budeme měnit samotný soubor.
 // Volání aktualizace() na soubor SPFile zdá znehodnotit vlastnosti v
 // nějaký smysl.  Aktualizace názvu"" selhala, dokud se to změnit (a aktualizovat() volání)
 // byly přesunuty před změnou názvu souboru.
            vlastnosti.ListItem["Titul"] = vlastnosti.ListItem.File.Name;

            vlastnosti.ListItem.Update();

            Soubor SPFile f = vlastnosti.ListItem.File;

            // Získejte příponu souboru.  Potřebujeme to později.
 řetězec spfileExt = nové FileInfo(f.Name).Prodloužení;

            // Soubor přejmenujte na ID položky seznamu a použijte příponu souboru, aby
 // Tahle část je neporušená.
            f.MoveTo(vlastnosti.ListItem.ParentList.RootFolder.Url +
                "/" + vlastnosti.ListItem["ID"] + spfileExt);

            // Potvrdit přesunutí.
            f.Update();

            EnableEventFiring();
        }

Rychlá nápověda: Webová část obsah dotazu, Vyhledávací hodnota sloupce a XSL

Mít název sloupce v typu obsahu s názvem "Real Estate umístění".

Tento sloupec je typu "vyhledávání".

Byly změněny <CommonViewFields> a ItemStyle.xsl k zobrazení sloupce.

Jednoduché <XSL:Vyberte hodnotu z =…> Vrátí zpět vnitřní hodnotu, která obsahuje data, ordinální číslo pozice, jako například:

1;#Miami

Pro získání hodnoty člověka k životnímu prostředí, pomocí xsl podřetězec za, Jak je uvedeno:

<XSL:Vyberte valuXSLf = "podřetězec za(@ Real_x005F_x0020_Estate_x005F_x0020_Location,’#’)"></XSL:hodnota z>

Tuto techniku použít vždy, když pracujete s vyhledávacími hodnotami v XSL transformací a potřebují získat hodnotu lidské přátelské.

<Konec />

Doplněk Technorati značky: , ,

Rychlé a snadné: Určit vnitřní název sloupce sloupce webu

AKTUALIZOVAT: Jeremy Thake má blogged o tomto a dát do nějaké kód pro konzolové aplikace To ukazuje vnitřní jména.

Snažil jsem se získat webovou část dotaz na obsah zobrazit datum splatnosti z úkolu a protože je obrazovka popisek "Datum splatnosti", Předpokládá, že název sloupce používat v <CommonViewFields> je "Due_x0020_Date".

Špatně!

Název skutečné sloupec byl v tomto případě "DueDate".

Jak jsem ji našla? Jsem re-číst Heather Solomon's blogu o úpravách CQWP Chcete-li zobrazit další sloupce dat. Ona popisuje tento proces v kroku #13. Důvěřovat. Je to správné. Nejméně, bylo to pro mě. Nevěřil jsem to zprvu pro jiný sloupec s mnohem delším názvem.

Já říkám, "důvěřovat" protože jsem nevěřil to a možná zbytečně poblíž dvě hodiny vydělávání hlavou proti zdi. Poté, co jsem se rozhodl "DueDate" Jméno, Chtěl jsem se přidat další pole pro <CommonViewFields>. Pomocí techniky Solomon, Jsem dostala název sloupce jako "XYZ_x0020_Project_x0020_Due_x00".

Myslel jsem si, To je zjevně zkrácený název. Šel jsem dopředu a un-zkrácený to bez úspěchu. Nakonec jsem použila zdánlivě zkrácený název a fungovalo to.

Bonus tip: Když jsem pracoval s CQWP, Pokud jsem přidal špatné vnitřní název na <CommonViewFields>, CQWP mi řekli že už dotaz nevrátil žádné výsledky. Ale, je-li přidán datový typ do názvu pole, by to vrátí výsledek. Přidáním dat typu ve skutečnosti maskovaný problém vzhledem k tomu, že byl odkazování na neexistující pole. Já jsem mohl přidat, Ale když jsem se snažil zobrazit jeho hodnotu, Vždy bych si prázdný.

To není maska chybu:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

To maskovat chybu:

<CommonViewFields>Due_x0020_Date,Datum a čas;</CommonViewfields>

</Konec>