Arhive de categorii: Dezvoltarea SharePoint

Explicaţie simplă: “Valoarea nu se încadrează în intervalul de aşteptat.”

ACTUALIZARE: Un anonim poster a lăsat un comentariu mare despre numele de interne. Asiguraţi-vă că să-l citiţi.

Atunci când se lucrează cu receptoare de eveniment şi alt cod care face referire la elemente de listă SharePoint prin modelul de obiect, Fac frecvent greseli care generează această eroare la rulare:

Eroare de încărcare şi rulează eveniment receptorul Conchango.xyzzyEventReceiver în xyzzy, Versiunea = 1.0.0.0, Cultură = neutră, PublicKeyToken = 0dc50a750396c3ac. Informații suplimentare despre este de mai jos. : Valoarea nu se încadrează în intervalul de aşteptat.

Cred că aceasta este o destul de generic de eroare care este potenţial cauzat multe moduri diferite de. Cu toate acestea, o explicaţie simplă este că eu sunt corelarea un câmp incorect. Dacă numele de domeniu este "Scadenta", Eu trebuie să referinţă ca aceasta într-un receptor de eveniment:

proprietăţi.ListItem["Scadenta"]

Când am misspell sau de a folosi cazul greşit atunci când câmpul de referinţă, SharePoint generează mai sus menţionat eroare de execuţie. De exemplu, Acest lucru este greşit:

proprietăţi.ListItem["scadenta"]

</scop>

Aboneaza-te la blog-ul meu.

Technorati Tags:

Rapid & Uşor: Creaţi un Folder şi asociaţi un tip de conţinut (Sau, Au KPI dumneavoastră şi le mănâncă prea)

Pentru a rezolva o problemă de KPI Am scris despre aici, Am făcut unele teste şi a descoperit că KPI lui de lucru împotriva dosare cu meta-date în acelaşi mod ca lucra împotriva documente sau lista de elemente. Mi s-a dovedit prin crearea unui nou tip de conţinut bazate pe tipul de conținut folder şi apoi adaugă câteva câmpuri. Am creat unele indicatori şi s-au dovedit că KPI-uri funcţionează conform aşteptărilor. Acest lucru a fost binevenit de ştiri. Nu este perfect, deoarece detaliaþi-jos veţi obţine de la KPI-ul împotriva folderele nu este exact ceea ce vrei. Acest lucru nu este prea mult un dezavantaj în cazul meu, pentru că 1) utilizatorii finali nu ştiu mai bine şi 2) masina de gaurit-jos se duce la un folder. Fac clic pe numele folderului şi sunt la elementul. Acesta este de două clicuri în loc de una, care nu este sfârşitul lumii.

Acest lucru frumos curgea cu munca făceam. Creez un folder pentru fiecare document care devine încărcat. Acest lucru se face printr-un receptor de eveniment. Ca rezultat al, este o bucată de tort să păstreze folderul părinte meta-date în sincronizare cu KPI-condus meta-date din fişierul în sine, deoarece sanitare este deja în locul. This allows me to have my KPI’s and eat them too 🙂

Am modificat la receptor de eveniment pentru a adăuga folderul şi apoi setaţi acest nou dosar pe tipul de conţinut pentru meu personalizat tip de conținut KPI-prietenesc. Acest bit de cod a făcut truc:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Documente").Subfolderele;
  SPFolder addedFolder = srcFolders.Add(proprietăţi.ListItem.ID.ToString());
  SPContentTypeId kpiCT = noi SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Conținut de tip ID"] = kpiCT;
  addedFolder.Item.Update();

Pentru a localiza real ID-ul tipului de conținut, Am accesat acel tip de conținut prin intermediul site-ul setări şi copie/lipit-o la URL-ul ca:

imagine

</scop>

Aboneaza-te la blog-ul meu!

Technorati Tags: ,

Rapid şi uşor: Obţine SPFolder de un SPListItem într-un receptor de eveniment

Urasc sa recunosc, dar m-am luptat cu acest unul toate zi. Receptorul meu eveniment trebuie să actualizeze un câmp din folderul său părinte. Acest lucru pic Arată cum se face:

privat nule UpdateParentFolder(SPItemEventProperties proprietăţi)
{

SPFolder thisItemFolder = proprietati.ListItem.File.ParentFolder;
thisItemFolder.Item["Starea de aprobare ZZ"] = "O veste bună, toată lumea!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

În acest caz, Am de lucru cu o bibliotecă de documente şi proprietăţile sunt provenind de la un eveniment ItemAdded.

Truc este că nu pot obţine SPFolder elementului direct de la elementul în sine (adică. proprietăţi.ListItem.Folder este null). În schimb, Du-te la elementul din listă fişierul asociat şi de a lua dosar pliant.

</scop>

Aboneaza-te la blog-ul meu!

Technorati Tags:

Încă un alt eveniment receptor depanare truc

Sunt sigur că nu sunt prima persoana care a venit cu acest lucru. Cu toate acestea, Nu am observat cineva publica un truc ca acest lucru, deoarece am început acordând o atenţie aproape de comunitatea ultima iulie. Deci, M-am gândit aş post it this vîrf rapid şi uşor de depanare.

Sunt de lucru pe un receptor de eveniment, care a început pentru a genera această eroare în 12 stup:

Eroare de încărcare şi rulează eveniment receptorul Conchango.xyzzyEventReceiver în xyzzy, Versiunea = 1.0.0.0, Cultură = neutră, PublicKeyToken = blahbalhbalh. Informații suplimentare despre este de mai jos. : Obiectul de referinţă nu setat la o instanţă a unui obiect.

Nu ştiam unde am avut introdus acest bug pentru că am făcut prea multe lucruri într-unul de meu cicluri de cod/implementat/testat.

Am încercat această soluţie pentru a obţine meu pdb acolo cu speranţa că SharePoint 12 stup ar arăta stivei, dar nu luck. Nu ştiu dacă este posibil şi dacă cineva nu, vă rugăm să-mi spuneţi 🙂

Ştiu că este posibil să scrie propriile mesaje de jurnal pentru a 12 stup. Sincer, Am vrut ceva un pic mai puţin înfricoşător şi mai rapid să pună în aplicare.

Aceasta a avut loc la mine că aş putea obţine cel puţin câteva informaţii de bază urme de capturare şi re-throwing generice excepţii ca aceasta:

  încercaţi {
    UpdateEditionDate(proprietăţi);
  }
  prinde (Excepţie e)
  {
    arunca noi Excepţie("Dispecer, UpdateEditionDate(): Excepţie: [" + e.ToString() + "].");
  }

Acest lucru a arătat până în 12 Stupul astfel:

Eroare de încărcare şi rulează eveniment receptorul Conchango.xyzzyEventReceiver în xyzzy, Versiunea = 1.0.0.0, Cultură = neutră, PublicKeyToken = gina. Informații suplimentare despre este de mai jos. : Dispecer, UpdateEditionDate(): Excepţie: [System.NullReferenceException: Obiectul de referinţă nu setat la o instanţă a unui obiect. la Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(Proprietăți SPItemEventProperties) la Conchango.xyzzyManagementEventReceiver.Dispatcher(Proprietăți SPItemEventProperties, Șir eventDescription)].

Care mi-a dat toate detaliile de care am nevoie pentru a urmări în jos această problemă specială şi mă aştept să o folosească mult merge înainte.

</scop>

Aboneaza-te la blog-ul meu!

Soluție: SPQuery nu de căutare foldere

În această săptămână am fost punerea în aplicare a trecut o "evoluţie" soluţie pentru un client care utilizează BDC şi SPQuery şi a fugit în unele dificultăţi folosind SPQuery împotriva o bibliotecă de documente care conţin foldere. Linie de fund: atribuie "recursive" să Vezi atributul de interogare.

Scenariul meu:

  • Luni, Am încărcat un document şi furnizarea unor date meta.
  • Săptămâna următoare, Am încărcat un nou document. Mare parte din acest nou document pe meta-date se bazează pe documentul pe care am încărcat pe luni (care o numim "documentul coordonator").
  • Am creat o faţadă de servicii web care oferă o interfaţă de BDC-friendly la listă, astfel încât utilizatorii pot localiza cu uşurinţă că documentul de luni printr-o căutare de titlu.
  • O coloană de date BDC oferă o interfaţă utilizator prietenoasă. (Aceasta este parte a încercarea mea de la utilizarea BDC pentru o coloană de căutare mai prietenos).

Serviciul de fatada BDC finală utilizează o interogare ca acest lucru să facă căutare:

 // Folosite U2U instrument pentru a ajuta la generarea această interogare florin.
      oQuery.Query =
        "<În cazul în care>";

      Dacă (titleFilter.Length > 0)
        oQuery.Query  =
          "  <Şi>";

      oQuery.Query  =
        "    <Şi>" +
        "      <Geq>" +
        "        <FieldRef nume =  "DocumentId" />" +
        "        <Tipul de valoare =  "Text">" + minId + "</Valoarea>" +
        "      </Geq>" +
        "      <LEQ>" +
        "        <FieldRef nume =  "DocumentId" />" +
        "        <Tipul de valoare =  "Text">" + maxId + "</Valoarea>" +
        "      </LEQ>" +
        "    </Şi>";

      Dacă (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Conţine>" +
          "      <FieldRef nume =  "Title" />" +
          "      <Tipul de valoare =  "Text">" + titleFilter + "</Valoarea>" +
          "    </Conţine>" +
          "  </Şi>";
      oQuery.Query  =
        "</În cazul în care>";

În etapa iniţială de dezvoltare, Aceasta a lucrat mare. Cu toate acestea, am introdus folderele în directorul de a rezolva unele probleme şi brusc, meu murături BDC nu ar reveni rezultate. Am urmarit acest lucru până la faptul că SPQuery ar reveni niciodată nici un rezultat. Am folosit foldere în primul rând pentru a permite mai multe fişiere cu acelaşi nume a fi încărcate, dar cu diferite meta-date. Când fişierul este încărcat, vom crea un folder bazat pe ID element listă şi apoi mutaţi fişierul acolo (Am scris despre faptul că aici; le-am avut rezultate mixte cu această abordare, dar pe ansamblu, este de lucru bine). Utilizatorul nu grijă despre dosare şi, de fapt, nu înţeleg cu adevărat că există orice pliant. Am configurat toate punctele de vedere la Biblioteca pentru a afișa elemente indiferent de dosare.

Am lovit de aceasta problema de două ori ca implementarea tehnică a evoluat şi a rezolvat este diferit de fiecare dată. Prima dată, Am fost folosind operatorul de contine în interogare. Fără un operator contine, Am fost în măsură să rezolve problema prin specificarea Vezi pe SPQuery economist. În loc să utilizaţi constructorul implicit:

SPList.Update() OLISTA = web.Liste["Documente"];

SPQuery oQuery = noi SPQuery();

În schimb am folosit un constructor care specifică o:

SPList.Update() OLISTA = web.Liste["Documente"];

SPQuery oQuery = noi SPQuery(oList.Views["Toate documentele"]);

Că rezolvat problema şi am început pentru a obţine rezultatele mele.

Am adaugat apoi operatorul conţine în amestec şi a rupt din nou. Se pare că operatorul contine, măsura în care pot spune, nu funcţionează cu vedere la fel ca un simplu GEQ / Operatorii de LEQ. Am făcut unele căutarea şi am învăţat că interogării ViewAttributes trebuie să fie setat la "Recursiv", ca şi în:

oQuery.ViewAttributes = "Domeniul de aplicare = "Recursive"";

Care a rezolvat problema pentru contine. de fapt, Acest lucru, de asemenea, rezolvat problema mea original Căutaţi şi dacă am avut specificat recursive atribuie prima dată, Nu s-ar am alerga în problema din nou.

Faptul că o SPQuery pe bază de vedere de lucrări pentru unii operatori (GEQ/LEQ) şi alţii nu (CONŢINE), cuplat cu faptul că KPI-uri nu par să lucreze la toate cu folderul care conţine documentul bibliotecile duce mine să cred că SPQuery are unele probleme de ortogonalitate.

Mulţumiri speciale:

  • Buni la U2U şi instrumentul lor de interogare.
  • Michael Hoffer mare "studiu de a face" blog-ul, Comentarii şi răspunsuri.

</scop>

Aboneaza-te la blog-ul meu!

MOSS KPI bug? Indicator de listă legat de bibliotecă de documente cu foldere

ACTUALIZARE 02/29/08: Am rezolvat această problemă prin crearea unui folder şi apoi atribuind un tip de conținut folder care are meta-date am nevoie pentru KPI-uri. Am descris că un pic mai în detaliu aici.

Am implementat o soluţie tehnică în cazul în care utilizatorii Încărcaţi documente la o bibliotecă de documente. Un receptor de eveniment creează un director şi se mută fişierul în directorul (folosind o tehnică similară cu ceea ce am scris despre aici). Ne-am navigat cu succes în apropiere de potenţialele probleme cauzate de receptoare de eveniment care redenumiţi fişierele încărcate (în principal, deoarece utilizatorii nu începe lor document făcând clic pe "nou" dar în schimb a crea docs la nivel local şi apoi încărcaţi-le).

Meta-date pentru aceste documente include un da/nu coloană de site-ul numit "Urgent" şi o altă coloană de site-ul numit "Status". Noi trebuie să îndeplinească o cerință de afaceri care arată procentul de "Urgent" documentele a căror stare este "În aşteptare".

Acest lucru este de obicei simplă de a face şi am descris ceva foarte mult ca acest lucru la SharePoint Beagle cu o mulţime de capturi de ecran în cazul în care sunteţi interesat.

Pe scurt, Am făcut următoarele:

  • Crea o biblioteca de doc numit "În aşteptare".
  • Configuraţi vizualizarea pentru a ignora structura de foldere.
  • Creaţi o listă de KPI.
  • Creaţi un indicator în lista care indică spre doc lib şi că "în aşteptare" Vezi.

Acest lucru pur şi simplu nu funcţionează. KPI-ul prezinta mi-ţintă (ex. cinci documente urgente) dar Arată întotdeauna numărul real de urgente documente ca fiind zero. Paradoxal, Dacă ai detalia la detalii, Acesta arată documentele urgente cinci în lista. Am creat un scenariu foarte simplu cu două documente, unul într-un folder şi unul nu. Aici este împuşcat de ecran:

imagine

Mai sus ecran shot Arată în mod clar există două documente în vedere dar valoarea"" este unul. CamlSchema"" cu document necompletat ID-ul este în folderul rădăcină, iar celălalt este într-un folder numit "84".

Mi se pare că, chiar dacă specificaţi o, KPI-ul nu onora "Arată toate elementele fără foldere" stabilirea şi în schimb, se limitează la folderul rădăcină.

Dacă am greşit, vă rugăm să drop-mi o linie sau lăsaţi un comentariu.

</scop>

Aboneaza-te la blog-ul meu!

Technorati Tags:

Soluţie la problemă: “FileNotFoundException” Cu mea caracteristică receptor.

Am fost de lucru pe o caracteristică săptămâna trecută, care ar adăuga unele receptoare de eveniment la o anumită listă de instanţă. (I blogged un pic despre acest receptor lista aici).

Folosind linia de comanda, Am putut instala caracteristica cu nici o eroare (dar se vedea mai jos pentru eroare ascunse). Când am încercat să utilizeze caracteristica de pe site-ul, MOSS s-au plâns de "FileNotFoundException" eroare. Această intrare de blog descrie modul în care am rezolvat-o.

Aceasta este eroarea care MOSS mi-a arătat în browser-ul web:

Caracteristica ' b2cb42e3-4f0a-4380-otilia-1ef9cd526f20’ nu a fost instalat deoarece încărcarea de eveniment receptor montaj "xyzzyFeatureReceiver_0" nu a reușit: System.IO.FileNotFoundException: Nu a putut încărca fişierul sau asamblarea "xyzzyFeatureReceiver_0’ sau una dintre dependenţele sale. Sistemul nu poate găsi fişierul specificat.
Nume de fişier: "xyzzyFeatureReceiver_0’
la System.Reflection.Assembly.nLoad(AssemblyName fileName, Şir codeBase, Dovezi assemblySecurity, Adunarea locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
la System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Dovezi assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
la System.Reflection.Assembly.InternalLoad(Șir assemblyString, Dovezi assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
la System.Reflection.Assembly.Load(Șir assemblyString)
la Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Adunarea obligatoriu de logare este transformat OFF.
Pentru a permite Adunarea obligati eşec logare, setaţi valoarea de registru [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) pentru a 1.
Notă: Există unele penalizare de performanţă asociat cu Adunarea obligati eşec logare.
Pentru a dezactiva această caracteristică, eliminaţi valoarea registry [HKLMSoftwareMicrosoftFusion!EnableLog].

Depanarea problemelor cu Windows SharePoint Services.

Ştiu cum de a provoca în mod deliberat această eroare: nu Instalaţi ansamblul în GAC. dar, a fost în GAC. I a instala în mod normal, ansambluri în GAC trăgându-le în c:\windowsassembly folderul utilizând windows explorer. M-am simţit niciodată 100% confortabil face acest lucru pentru că am crezut întotdeauna că gacutil a existat un motiv … aşa că am încercat care. El a făcut nici o diferenţă.

Am cautat pe Internet şi a găsit acest post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Poster s-a întâmplat să fie utilizând aceeaşi rădăcină pic de cod (din cartea în interiorul AAC din această listă) aşa că a fost un semn de speranţă. Cu toate acestea, sugestia de decorare Adunarea cu un [asamblare: ] Directiva nu avea sens pentru mine. Am încercat-o oricum, şi am fost dreapta. El a făcut nici o diferenţă.

Apoi am observat că definiţia mea de clasă nu a fost publică. Am făcut-o publică şi că a făcut nici o diferenţă.

Următoarea, M-am dus la probleme de a permite "Adunarea obligati eşec jurnal" (urmând instrucţiunile utile şi precise oferite) şi acest lucru este în cazul în care lucrurile au început pentru a obţine interesant. Că log Arată-mi că runtime este în căutarea peste tot pe acel server pentru Adunarea mea. Chiar pare a fi căutaţi pentru el în meu medicament cabinet. dar … Acesta nu va căuta pentru el în GAC.

Am pus pe haina mea de iarnă şi du-te în căutare Internet din nou şi găsi că cineva a avut această problemă prea. Discuţie îndelungată în care postaţi badarau oprit în nimic şi nu pot găsi o soluţie.

Muta meu de asamblare într-unul dintre locurile de jurnal susţine că este în căutarea şi face un pic mai mult progres. Eu sunt recompensat cu o nouă eroare în browser-ul atunci când încerc să activaţi caracteristica:

Imposibil de creat caracteristică receptor obiect de asamblare "xyzzyFeatureReceiver_0", tip "Conchango.xyzzyFeatureReceiver" pentru caracteristica b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Valoarea nu poate fi nul.
Numele parametrului: tip
la System.Activator.CreateInstance(Tip tip, NonPublic booleene)
la System.Activator.CreateInstance(Tip tip)
la Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Depanarea problemelor cu Windows SharePoint Services.

Timp pentru o ultima călătorie la internet!

Acest timp am afla, destul de previzibil, că MOSS probleme această eroare pentru că adunarea nu este în GAC.

Vreau pentru a obţine ceva pozitiv de acest lucru şi să încerce să se simtă un pic de mândru că am creat Fugar MSIL ansamblurilor de, dar nu este de lucru. Eu sunt pur şi simplu supărat. Eu personal mormăind "pui sau ouă" sub respiraţia mea.

În cele din urmă decid să punt. Am crea un proiect nou şi copiaţi/lipiţi codul la incredible-cloaked-from-the-GAC-assembly non-de lucru de proiect peste la acest nou proiect. (Mă uit pentru un pavilion de construi numit ceva de genul "Ascundere la Adunarea obligatoriu dacă instalat în GAC" dar nu pot găsi unul).

Am caracteristică a instala şi a activa şi … funcţionează! Deci, după ce toate că, Trebuit să practic ' reboot’ proiectul meu. Acest lucru este un alt motiv de ce urasc calculatoare.

Am făcut-învăţa ceva util din aceasta. Am avut fost instalarea caracteristici folosind linia de comanda stsadm toată ziua şi fost folosind "-vigoare" opţiunea din obişnuinţă. Pentru unii motiv, Nu am folosit - opţiune vigoare atunci când am instalat noul proiect. de data aceasta, Am făcut de fapt, cu adevărat uitaţi să copiaţi acest nou proiect de asamblare în GAC. Ca rezultat al, Am primit "FielNotFoundException" eroare. de data aceasta, Am luat de la stsadm, nu atunci când am încercat pentru a activa caracteristica prin intermediul browser-ul web. Deci, -vigoare, de fapt, joacă două roluri. Vă permite să re-a instala o caracteristică existente. De asemenea, vă permite să instalaţi o caracteristică trăsură pentru două persoane, care nu poate lucra în timpul rulării prin suprimarea eroare. Se spune, probabil, la fel de mult în ajutorul undeva, dar nu am observat-o.

</scop>

Rapid & Uşor: Redenumiţi fişierul încărcat utilizând modelul de obiect SharePoint Via un receptor de eveniment

ACTUALIZARE: Acest lucru funcţionează, dar există limitări semnificative care sunt descrise în Comentarii. Acest lucru poate fi încă utilă în unele circumstanțele.

ACTUALIZARE 2: În proiectul meu curent, utilizatorii întotdeauna Încărcați documente. Ca rezultat al, Eu nu a alerga într-o problemă în cazul în care MS Word se execută şi crede că fişierul a fost redenumit pe ea. I a alerga într-o problemă, "fişierul a fost modificat de altcineva" şi acest lucru rezolvat prin intermediul unui pavilion de tip semafor simplu. Utilizatorii au nevoie pentru a schimba un câmp de date meta la valoarea sa implicită la altceva. Itemupdated() receptor caută o valoare validă de acolo înainte de a efectua de fapt Redenumire şi de atunci, Nu am avut probleme. Poate varia de kilometraj dumneavoastră.

Eu am o cerinţă de client de a schimba numele de fişiere încărcat la o bibliotecă de documente specifice pentru a se conforma cu o convenţie de denumire special. API nu furnizează o Redenumire"()" metoda. În schimb, vom folosi "MoveTo(…)". Aici este un pic minimă de cod pentru a realiza acest lucru:

 publice suprascrie nule ItemAdded(SPItemEventProperties proprietăţi)
        {
            SPFile f = proprietăţi.ListItem.File;

            f.MoveTo(proprietăţi.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Bit înşelător numai este "proprietăţile. ListItem.ParentList.RootFolder.Url". MoveTo() metoda necesită un URL. Care piure şir de puncte de mine la folderul rădăcină al meu curent bibliotecă de documente. Acest lucru permite-mi pentru a evita orice greu de codificare în receptor mea de eveniment.

Aceasta este o versiune mult mai util, care face acelaşi lucru, dar atribuie numele de fişier "Titlul":

 publice suprascrie nule ItemAdded(SPItemEventProperties proprietăţi)
        {
            DisableEventFiring();

            // Atribui titlul de acest element pentru numele fişierului în sine.
 // NOTĂ: Această misiune trebuie să aibă loc înainte de a ne modifica fişierul în sine.
 // Actualizare de asteptare() pe SPFile pare să invalideze proprietăţi în
 // unele sens.  Actualizărilor titlu"" nu a reuşit până la această schimbare (şi actualizare() apel)
 // au fost mutate în faţa schimbarea numele de fişier.
            proprietăţi.ListItem["Titlul"] = proprietăţi.ListItem.File.Name;

            proprietăţi.ListItem.Update();

            SPFile f = proprietăţi.ListItem.File;

            // Obţine extensia fişierului.  Am nevoie de asta mai târziu.
 şir spfileExt = noi AuthConfig(f.Name).Prelungire;

            // Redenumiţi fişierul ID element de listă şi de a folosi extensia de fişier pentru a menţine
 // că o parte din acesta intacte.
            f.MoveTo(proprietăţi.ListItem.ParentList.RootFolder.Url +
                "/" + proprietăţi.ListItem["ID"] + spfileExt);

            // Se muta.
            f.Update();

            EnableEventFiring();
        }

Iute Vîrf: Conţinut parte de interogare Web, Valoare de coloana căutare şi XSL

Eu am un nume de coloană într-un tip de conținut numit "Real Estate locaţie".

Această coloană este de tip "căutare".

Am modificat <CommonViewFields> şi ItemStyle.xsl pentru a arăta coloana.

Un simplu <XSL:valoare-a selecta =…> se întoarce înapoi o valoare interne, care include date ordinale poziţia, cum ar fi:

1;#Miami

Pentru a obţine valoarea omului-prietenesc, utilizaţi xsl subşir-după, ca:

<XSL:valoare-a selecta = "subşir-după(@Real_x005F_x0020_Estate_x005F_x0020_Location,’#’)"></XSL:valoarea de>

Folosiţi această tehnică ori de câte ori vă sunt de lucru cu valori de căutare în XSL transformă şi nevoie pentru a obţine valoarea omului-prietenesc.

<final />

Technorati Tags: , ,

Rapid şi uşor: Determina interne coloana numele unei coloane de site-ul

ACTUALIZARE: Jeremy Thake a blogged despre acest lucru şi a pus unele codul pentru o aplicaţie consolă Arată că numele de interne.

Am fost încercarea de a obţine o parte web de interogare conținut pentru a afişa o dată scadentă la o sarcină şi pentru că eticheta de ecran este "Scadenta", Am presupus că numele de coloană se utilizează în <CommonViewFields> este "Due_x0020_Date".

Greşit!

Numele de coloană reală în acest caz a fost "DueDate".

Cum l-am găsit? Am re-citit Heather Lui Solomon blog intrare despre modificarea CQWP pentru a arăta coloane suplimentare de date. Ea descrie acest proces la pas #13. Este de încredere. Este corect. Cel puţin, a fost corect pentru mine. Eu nu încredere în acesta la prima pentru o altă coloană cu un nume mult mai.

Spun "încredere în acesta" pentru că nu încredere în ea şi, probabil, pierdut near două ore intarziere capul meu un zid. După ce am rezolvat DueDate"" nume, Am vrut să adăugaţi un alt câmp pentru a <CommonViewFields>. Folosind tehnica Solomon, Am fost obtinerea o coloana Nume ca "XYZ_x0020_Project_x0020_Due_x00".

M-am gândit la mine, care este în mod clar un nume trunchiate. M-am dus mai departe şi ne-trunchiată cu nici un succes. În cele din urmă am folosit numele aparent trunchiate şi it worked.

Bonus sfat: Când am fost de lucru cu CQWP, dacă am adăugat un nume de rău interne a <CommonViewFields>, CQWP mi-ar spune că interogarea a avut returnat nici un rezultat. dar, dacă am adăugat un tip de date cu numele de domeniu, Aceasta ar reveni un rezultat. Adăugarea de date tip fapt mascat o problema din moment ce am fost corelarea un câmp non-existente. I a putea a aduna it, dar când am încercat pentru a afişa valoarea sa, Mi-ar lua întotdeauna un gol.

Acest lucru nu a făcut masca eroare:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Acest lucru a făcut masca eroare:

<CommonViewFields>Due_x0020_Date,DateTime;</CommonViewfields>

</scop>