arhive lunare: Decembrie 2007

Fiul meu tocat Gamespot

Deci, în această dimineaţă, fiul meu este determinată pentru a vedea o vârstă-treisprezece restricţionat Halo 3 video de la GameSpot. Eu sunt în afara shoveling zapada, Deci, eu nu sunt acolo pentru a ajuta sau împiedica. Necesitatea este mama invenţiei şi toate că … El are o eureka! momentul. El îşi dă seama că chiar dacă Gamespot vrea să-l introduceţi lui reale data naşterii, El poate intra de fapt orice data nasterii el vrea. Odată ce el a dat seama că, El a făcut el însuşi suficient de mare pentru a vedea video.

I’m not quite sure how I feel about this 🙂

Funny duminică: “Este gunoiul de imprimare”

La meu primul loc de muncă din colegiu în 1991, Am fost norocos pentru a lucra pentru o companie de producţie cu 13 Locatii, nu, inclusiv HQ sale corporative din New Jersey. M-am alăturat doar atunci când compania a fost fier de afară un nou sistem ERP. Am fost un mic Departamentul de IT de aproximativ zece oameni cu totul, doi dintre acestia nu a făcut călătorie. Parte a proiectului implică înlocuirea IBM System 36 cutii cu HP hardware şi HPUX. Toată lumea folosite tuburi verde pentru a accesa sistemul de.

Proiectul role de-a lungul şi sunt trimise în jos la Baltimore cu un coleg nou, Jeff. Treaba noastră a fost la putere până la caseta de Unix, Asiguraţi-vă că o/s a fost difuzate, Instalaţi sistemul ERP, configuraţi ERP, tren de persoane pe ERP şi face de lucru personalizate pentru oameni la faţa locului. (Acest lucru a fost un loc de muncă de vis, mai ales venind direct din Colegiul). Înainte de a putea într-adevăr ajunge la pamant, avem nevoie pentru a dezarhiva toate tuburile verde, pune-le pe pupitre si le sârmă. Şi partea cea mai bună a fost că am avut de a pune conectori RJ11 pe noi înşine.

Pentru unii motiv pentru care am înţeles niciodată şi a crezut de fapt niciodată să întreb despre timp, am avut unele compania contractantă veni de-a lungul şi de a alerga cablu pe parcursul plante, dar nu avem le pune pe conectori. Deci, a fost o cutie de"patch-uri" cu zeci de neetichetate cablurilor din "sala de calculatoare" şi aceste snaked în jurul clădirii în diverse locuri din clădire.

Am lucrat modul nostru prin aceasta pe parcursul un week-end, fiecare fir de testare, punerea pe un conector (asigurându-vă că acesta era drepte vs. au trecut), asigurarea setările de biţi pe verde tuburi şi imprimante au fost corecte, etichetare cabluri, asigurându-vă că "getty" a fost execută corect pentru fiecare port şi, probabil, o mie alte lucruri care I-am suprimat de atunci. Totul a venit împreună destul de frumos.

dar, a existat un singur cablu de important că am putut da seama. Fabrica din Baltimore au avut o relaţie cu o locaţie de depozitare în New Jersey. Unele comenzi plasate în Baltimore expediate din acea locaţie. Au existat două fire pe care am avut să vă conectaţi la caseta de HPUX: un tub verde şi o imprimantă. Tub verde a fost usor, dar imprimanta transformat într-un coşmar de trei săptămâni.

Dacă nu-l stiu, sau l-au suprimat, care se ocupă cu tuburi de verde şi imprimante în acest fel, Există diferite opţiuni pe care le face cu setând ace de diverse. 8-pic, 7-pic, Paritatea (chiar/ciudat/nici una), probabil altele. Dacă aveţi unul dintre aceste setări greşit, tub sau imprimanta Arată încă chestii, dar va fi total gibberish, sau va fi gebreasca cu o mulţime de lucruri de recunoscut între. desigur, aceste coduri PIN sunt greu pentru a vedea şi trebuie să fie elaborate folosind o şurubelniţă plat-marginea mici. Şi ei nu sunt standard.

Am înfiinţat prima de multe apeluri rapide cu tipul de NJ (un hater calculator cenuşiu, care, probabil, blesteme-ne în această zi). Avem tub verde destul de repede de lucru, dar nu am putut ajunge să lucreze. It păstrat "imprimare gunoi". Ne-ar crea un nou conector RJ11, Comutarea între încrucişate şi drepte. Ne-ar şterge port şi re-creat în Unix. Am trecut prin sarcina dificilă de a-l explica-ne configurare pin pe imprimanta, nu este sigur dacă el a fost faci corect.

Este vorba de timp pentru a merge live, totul în Baltimore este Colibri, dar nu putem obţine imprimanta blestemat în NJ la locul de muncă! Ne-am epuizat toate posibilitățile cu excepţia conducere înapoi până la NJ pentru a lucra la imprimantă în persoană. Pentru a evita toate că de conducere, în cele din urmă cerem-l la fax-ne ceea ce el devine atunci când este "gunoi", în speranţa că poate nu va fi un indiciu în gunoi pe care ne va spune ceea ce suntem faci greşit.

Când am primit faxul, am ştiut imediat ce a fost greşit. A se vedea, metoda de testare dacă am avut configurat corect o imprimantă a fost să emită un lp"" comandă ca acest lucru:

LP/etc/passwd

Practic, am tipărit fişierul parolă unix. Intotdeauna este prezent şi afară de la cutie, întotdeauna doar o singură pagină. Vă standard parola fişier Unix arata ceva de genul:

Smith:*:100:100:8A-74(birou):/Home/smith:/usr/bin/sh Comentarii:*:200:0::/acasa/Comentarii:/usr/bin/sh  

Am avut fost imprimarea în fişierul parolă peste si peste din nou pentru câteva săptămâni şi ea a fost de imprimare corect. Cu toate acestea, pentru utilizatorul final, a fost "imprimare gunoi".

</scop>

Încă o altă reţea acreditările Multi-Challenge problemă şi Solution

Clientul meu recent instalat un dispozitiv de magie la Ienupăr se pare că înlocuit lor vechi balancer de încărcare de reţea Cisco (NLB). La aproximativ în acelaşi timp, am instalat un remediere rapidă pentru a aborda o problemă de flux de lucru.

O zi sau două mai târziu, am observat o problemă atunci când am accesat furnizorul de servicii partajate (SSP). Am putea ajunge la ea, dar noi ar fi contestată pentru un ID de utilizator şi parola de mai multe ori pe fiecare pagină. Acest lucru nu sa întâmplat cu app portalului principal, nici administraţia centrală. În mod natural, nu ştim care dintre cele două (Ienupăr sau remediere rapidă) ar fi problema, Deşi am suspectat puternic remedierea rapidă, imaginind noi nu avut instalat este destul de drept.

Sa dovedit că Juniper a avut un fel de compresie setare. Unul dintre îmbrăcat cifre peste în reţea Grupa transformat că stabilirea off. Care a rezolvat problema noastră.

Acest lucru nu este prima dată că compresie a fost cauza o problemă de SharePoint pentru mine. IIS compresie afectate negativ un instrument 3rd petrecere de oameni buni la Dot Net fabrica pentru IE 6 browsere (IE 7 browsere au lucrat fără dificultate).

Deci, Adauga "compresie" la lista de pericole.

</scop>

Credit pentru: http://www.elfwood.com/art/s/h/sherry/death_colour.jpg.html

Technorati Tags: ,

Gândire despre schimbarea platforma de Blogging

Am pornit meu blogging cariera"" utilizând Microsoft pe platformă şi ea a fost bun cu mine. Este uşor pentru a posta, sunt bune opţiuni şi widgets pentru gestionarea tau "spaţiu", web decente de stocare şi aşa mai departe.

Cu toate acestea, Am căzut cu adevărat doar în soluţie de MS cu aproape nici o planificare. Acel singur apeluri pentru mine pentru a evalua unde sunt si unde am de gând, în termeni de o platforma de blogging. Există, de asemenea, două importante limitări care ma deranjeaza chiar acum vis-à-vis de Windows Live Spaces.

Prima, I cant a lua statistici foarte bun. Există statistici dar detaliu este adesea trunchiat şi nu a prezentat într-un mod care permite pentru orice fel de analiză. Nu există nici o capacitate de sortare sau de export. Primesc multe blog idei bazate pe tipul de oameni găsi informaţii (sau mai ales nu reuşesc să găsească) Când au căutare blog-ul meu. Este foarte greu de a utiliza spaţiile viaţa pentru că.

Al doilea, nu pare a fi nici un mecanism de "monedă" un blog de windows live space. de fapt, pentru a scăpa de MS anunturi (din care am obţine nici un beneficiu), Am nevoie să plătiţi de fapt Microsoft. (Cel puţin, Asta e cum am înţeles; Am fost în imposibilitatea de a obţine răspunsuri definitiv la acest lucru şi întrebări de genul acesta).

Acum, că am luat un model stabilit şi set de obiceiurile de blogging, Vreau pentru a evalua alte opţiuni. Am făcut nişte cercetări şi există o mulţime de alegeri, dar eu sunt curios de ceea ce alţi oameni, deosebit de alţii în comunitatea de SharePoint (ca bloggeri sau cititorii), ca pentru a utiliza.

În cazul în care acest subiect vă interesează şi aveţi un aviz sau sunt dispuşi să împărtăşească experienţa dumneavoastră, vă rugăm să lăsaţi un comentariu sau e-mail-mă direct.

mulţumesc!

<final />

Technorati Tags:

SharePoint Designer E-mail trimite ???? într-un E-mail

Utilizatori forum cer ocazional: De ce se pune SharePoint Designer ???? în mea de e-mail în loc de o valoare de câmp?

Un motiv acest lucru se întâmplă este că variabila la care te referi este null.

Acest lucru se poate întâmpla pentru că încercaţi să referinţă un câmp din "elementul curent" dar utilizator intrat niciodată o valoare în acel câmp formular.

<final />

Technorati Tags:

Compara / Test pentru datele gol în flux de lucru SharePoint Designer

Scenariu: Într-un flux de lucru SharePoint Designer, aveţi nevoie pentru a determina dacă un câmp dată este gol.

Problema: DOCUP oferă o metodă directă pentru a compara datele pentru altceva decât o dată. Nu se poate crea o stare ca asta: "Dacă [DateField] egal cu gol".

Soluție: Conversia data la un șir. Utilizaţi şir comparaţie pentru a determina dacă data este gol.

Capturi de ecran:

Capturi de ecran următoare arată cum să facă acest lucru. În acest scenariu, un câmp un element, "Mediu permise:Permis prima data memento", este prezentată şi fluxul de lucru incendii în răspuns.

imagine

imagine

Note:

Când am încercat acest lucru, Am fost plăcut surprins să afle că funcţionează. Am fost îngrijorat de faptul că SharePoint Designer ar putea interzice atribuirea şir (Variabila:StringReminderDateDate) dar ea a făcut permite.

Am fost, de asemenea, în cauză, care îi permite, valoarea s-ar putea fi nulă şi fie sufla WF la runtime sau poate ridica temperatura globală 1/2 un grad, dar aceste preocupări sunt nefondate.

</scop>

Technorati Tags:

Barul este încă destul de mare pentru a extinde MOSS

Astăzi, Am fost de lucru cu un client şi descrie cum să modifice partea web de interogare conținut şi afişa suplimentare de biţi de informaţii de la un tip de conținut.

"Primul., configuraţi CQWP să se conecteze la sursele de date, apoi exportaţi la dumneavoastră de lucru, modifica <CommonViewFields>, încărcaţi, Scoateţi original şi acum este "amorsate’ pentru a afişa aceste alte coloane. Următoarea, deschide-te SharePoint designer, Navigaţi la site-ul colecţia rădăcină şi a localiza ItemStyle.xsl. Unul dintre şabloane Copiere ca punct de plecare util. Du-te înapoi şi de a modifica CQWP pentru a face uz de acest nou şablon. În cele din urmă, modificaţi şablonul pentru a face dumneavoastră noi domenii! (Nu uitaţi să verificaţi înapoi în aşa că alţi utilizatori pot vedea rezultatele)."

Este toate destul de clar pentru mine (şi cele mai multe dintre noi tipuri de dezvoltator SharePoint) ce este întâmplă şi modul în care este destul de frumos, chiar, că aspectele de regăsire date de CQWP sunt atât de bine-separata de la aspectele de prezentare de date. dar, nu este atât de uşor să explice, este?

<final />

Afişare conţinut interogare Web parte rezultatele într-o grilă / Tabel

Privire de ansamblu şi obiectivul

Afară de la cutie, MOSS’ Conţinut parte de interogare Web (CQWP) afişează rezultatele sale într-un format listă, similar cu rezultatele căutării. De asemenea, este posibil să afişaţi rezultatele în format grilă (adică. Format de tabel HTML). Grila formate sunt mai bine în anumite circumstanţe. Descrie modul de a realiza acest efect în acest articol.

Scenariu de afaceri

Am lucrat cu un client pe un rollout de muşchi de nivel de întreprindere. Ne-am proiectat taxonomie lor, astfel încât proiectele sunt cetăţeni de clasa întâi în ierarhia şi au propriile lor site-ul de nivel superior. Managerilor de proiect să menţină o listă de singleton de proiect informaţii rezumative, ca titlu, buget, data preconizată de finalizare, restul bugetul şi alte domenii de tip de rezumare. De "singleton" Adica o personalizate lista SharePoint garantat să conțină doar un singur articol. Simplist, se pare ca asta:

imagine

Abordare tehnică este la fel de mult după cum este descris aici (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP foloseşte o transformare XSL să emită HTML pentru browser-ul sa redea.

Am envision întotdeauna rezultatul înainte de scufundare în XSL pentru XSL este un coşmar. Aici este meu rezultatul dorit:

imagine

HTML ca aceasta generează acest rezultat:

<HTML>
 <corpul>
 <Centrul>
 <tabel frontieră= 1>

<!-- Etichete-->
 <TR bgcolor= albastru>
 <TD><font culoare= alb><b>Numele proiectului</b></font></TD>
 <TD Aliniaţi= dreapta><font culoare= alb><b>Data completă</b></font></TD>
 <TD Aliniaţi= dreapta><font culoare= alb><b>Buget</b></font></TD>
 <TD Aliniaţi= dreapta><font culoare= alb><b>Cheltuieli actuale</b></font></TD>
 <TD><font culoare= alb><b>Starea generală</b></font></TD>
 </TR>

<TR>
 <TD>Re-sârmă sala de calculatoare.</TD>
 <TD Aliniaţi= dreapta>02/01/08</TD>
 <TD Aliniaţi= dreapta>22,500.00</TD>
 <TD Aliniaţi= dreapta>19,000.00</TD>
 <TD>În curs de desfăşurare</TD>
 </TR>

<TR>
 <TD>Furnizarea de servere pentru SQL Upgrade</TD>
 <TD Aliniaţi= dreapta>04/01/08</TD>
 <TD Aliniaţi= dreapta>7,500.00</TD>
 <TD Aliniaţi= dreapta>0.00</TD>
 <TD>Planificate</TD>
 </TR>

</tabel>
 </Centrul>
 </corpul>
</HTML>

Abordare

Urmaţi aceşti paşi pentru a crea grila:

  1. Identifica componentele de reţea (rânduri/coloane).
  2. Defini şi de a crea coloane de site-ul necesar.
  3. Creaţi site-uri sub pentru proiecte şi liste de singleton.
  4. Adauga CQWP la o pagină web şi configuraţi-l pentru a căuta listele tale.
  5. Modifica CQWP XML să adune coloane suplimentare.
  6. Modifica XSL pentru a genera un tabel.

Am de gând să se concentreze asupra numărului şase. Numere unul prin patru sunt drept-înainte, şi ceva care orice utilizator CQWP deja a făcut. Numărul cinci a fost bine documentate de alţii, inclusiv acest articol exhaustivă de ecran-shot încărcat la MSDN aici (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) şi Heather Solomon blog aici (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Nuci şi bolţuri

Începe şi implementa paşi unul prin cinci după documentaţia MSDN şi Heather Solomon articolul.

La acest punct, aţi adăugat ta CQWP la pagina şi aveţi dumneavoastră <CommonViewFields> configurate după cum este necesar.

Urmând paşii de obicei, I a lua aceste rezultate intermediare:

1. Crea un tip de conținut, un șablon particularizat lista pentru acel tip de conținut și două site-uri. Aici este tipul de conținut:

imagine

Aici este structura site-ului:

imagine

2. Adauga CQWP după crearea meu proiect subsite-uri și singleton liste rezumatul proiectului:

imagine

3. Adauga toate informaţiile suplimentare vreau prin <CommonViewFields>:

        <proprietate nume="CommonViewFields" tip="şir">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</proprietate>

Reţineţi că am avut de a păstra toate câmpurile de proprietate pe o linie sau o nu ar funcţiona (CQWP mi-ar spune că interogarea returnat niciun element).

4. La acest punct, Suntem gata pentru a trece dincolo de articolul MSDN şi flip pe peste articolul lui Heather Solomon. Urmaţi paşii ei incepand de lângă pas #5 pentru a crea o personalizate / unghosted versiune de ItemStyle.xsl. Am urmat sfatul lui Heather, până prin pas 11 şi a obţine aceste rezultate intermediare:

4.1: Nume şablon mea XSL, după cum urmează:

<XSL:Nume şablon = "grilă" meci = "Row[@Style = "Grila"]" modul = "itemstyle">

De asemenea, uşor modifica ei sugerat <XSL:pentru fiecare …> prin adăugarea de o <br /> Tag-ul pentru a oferi o listă mai curat:

    <XSL:pentru fiecare Selectaţi="@*">
      P:<XSL:valoarea de Selectaţi="nume()" /><br/>
    </XSL:pentru fiecare>

4.2: Modifică partea web, Du-te la aspect şi selectaţi meu "grilă" stil:

imagine

Aplicaţi schimbare şi aici este rezultatul:

imagine

Putem vedea din cele de mai sus că domeniile vrem (Numele proiectului, cheltuieli, statutul, etc) sunt disponibile pentru noi de a folosi atunci când am emite HTML. Nu numai că, dar vom vedea numele prin care noi trebuie să referinţă aceste coloane în XSL. De exemplu, am de referinţă proiectul statutului ca "Project_x005F_x0020_Name".

La acest punct, plecam de la Heather pe blog si de la umeri de giganţi aceste, Adăuga propria mea pic.

ContentQueryMain.xsl

NOTĂ: Când a face modificări la atât ContentQueryMain.xsl, cât şi ItemStyle.xsl, trebuie să verificaţi aceste fişiere înapoi în înainte de a vedea efectul de modificări.

Scopuri grila de luare a, MOSS utilizează două fişiere diferite XSL pentru a produce rezultate vom vedea de la o CQWP. Pentru a genera anterioare de biţi de ieşire, am modificat ItemStyle.xsl. MUŞCHI de fapt foloseste un alt fișier XSL, ContentQueryMain.xsl sa în colaborare cu ItemStyle.xsl pentru a genera sale HTML. După cum sugerează şi numele, ContentQueryMain.xsl este principala"" XSL care controleaza fluxul de ansamblu de traducere. Acesta reiterează prin toate elementele găsit şi trece-le unul câte unul la template-uri în ItemStyle.xsl. Ne vom modifica ItemStyle.xsl pentru a genera deschis <tabel> Tag-ul înainte de a emite primul rând de date şi închidere <tabel> Tag-ul după emit ultimul rând. Pentru a realiza acest lucru, ContentQueryMain.xsl este modificat pentru a trece doi parametri noastre "grilă" şablon în ItemStyle.xsl, "ultimul rând" şi "rândul curent". ItemStyle.xsl foloseşte să emită condiţional Tag-uri necesare.

Folosind tehnica de Heather Solomon, ne găsiţi ContentQueryMain.xsl. Acesta este situat în acelaşi loc ca ItemStyle.xsl. Acest ecran shot ar trebui să ajute:

imagine

Trebuie să efectuaţi următoarele modificări:

  • Modificarea unui șablon xsl, "CallItemTemplate" fapt care invocă noastre şablon de grilă în ItemStyle.xsl. Vom trece doi parametri în şablonul grila astfel încât acesta va avea datele are nevoie pentru a genera condiţional deschidere şi închidere <tabel> Tag-uri.
  • Modifica un pic de ContentQueryMain.xsl care necesită "CallItemTemplate" pentru a trece un LastRow"" parametru aşa că LastRow poate fi trecut pe la noastre şablon de grilă.

Găsiţi şablonul denumit "OuterTemplate.CallItemTemplate" identificate de şir:

  <XSL:şablon nume="OuterTemplate.CallItemTemplate">

Înlocui șablonul întreg după cum urmează:

  <XSL:şablon nume="OuterTemplate.CallItemTemplate">
    <XSL:Param nume="CurPosition" />

    <!--
      Adauga "LastRow" parametru.
      Noi folosim doar atunci când elementul stil trece în "Grilă".
    -->
    <XSL:Param nume="LastRow" />

    <XSL:alege>
      <XSL:când test="@Style = 'NewsRollUpItem'">
        <XSL:aplica-template-uri Selectaţi="." modul de="itemstyle">
          <XSL:cu-param nume="EditMode" Selectaţi="$cbq_iseditmode" />
        </XSL:aplica-template-uri>
      </XSL:când>
      <XSL:când test="@Style = 'NewsBigItem'">
        <XSL:aplica-template-uri Selectaţi="." modul de="itemstyle">
          <XSL:cu-param nume="CurPos" Selectaţi="$CurPosition" />
        </XSL:aplica-template-uri>
      </XSL:când>
      <XSL:când test="@Style = 'NewsCategoryItem'">
        <XSL:aplica-template-uri Selectaţi="." modul de="itemstyle">
          <XSL:cu-param nume="CurPos" Selectaţi="$CurPosition" />
        </XSL:aplica-template-uri>
      </XSL:când>

      <!--
              Trece poziţia curentă şi lastrow la grila itemstyle.xsl şablon.
              ItemStyle.xsl care va folosi pentru a emite open şi închidere <tabel> Tag-uri.
      -->
      <XSL:când test="@Style = "Grila"">
        <XSL:aplica-template-uri Selectaţi="." modul de="itemstyle">
          <XSL:cu-param nume="CurPos" Selectaţi="$CurPosition" />
          <XSL:cu-param nume="Ultima" Selectaţi="$LastRow" />
        </XSL:aplica-template-uri>
      </XSL:când>

      <XSL:în caz contrar>
        <XSL:aplica-template-uri Selectaţi="." modul de="itemstyle">
        </XSL:aplica-template-uri>
      </XSL:în caz contrar>
    </XSL:alege>
  </XSL:şablon>

Comentarii descrie scopul modificările.

desigur, "OuterTemplate.CallItemTemplate" în sine este numit de la un alt şablon. Găsiţi că şablon de cercetare pentru acest șir text:

<XSL:şablon nume="OuterTemplate.Body">

Parcurgeţi instrucţiunile din OuterTemplate.Body şi inseraţi parametrul LastRow după cum urmează (indicat ca un comentariu în caractere italice):

<XSL:apel-şablon nume="OuterTemplate.CallItemTemplate">
  <XSL:cu-param nume="CurPosition" Selectaţi="$CurPosition" />
  <!-- Inseraţi parametrul LastRow. -->
  <XSL:cu-param nume="LastRow" Selectaţi="$LastRow"/>
</XSL:apel-şablon>

După toate acestea, în cele din urmă am lucruri stabilite în mod corespunzător astfel încât ItemStyle.xsl nostru poate emite <tabel> Tag-uri la locul potrivit.

ItemStyle.Xsl

NOTĂ: Din nou, verifica în ItemStyle.xsl după a face orice modificări, astfel încât veţi vedea efectul modificărilor.

Avem două sarcini aici:

  • Înlocuiţi întreaga grilă şablon. Să puteţi copy/paste de mai jos.
  • Adauga unele jumbo mumbo în afara definiţia şablonului care permite "formatcurrency" şablon de a lucra. (Vă pot spune că am un mâner fragilă pe XSL).

Prima, lângă partea de sus a ItemStyle.xsl, adăugaţi această linie:

  <!-- Unele mumbo jumbo care ne permite să afişaţi SUA. moneda. -->
  <XSL:zecimal-format nume="Personalul" cifre="D" />

  <XSL:şablon nume="În mod implicit" meci="*" modul de="itemstyle">

Reţineţi că am adăugat-o direct înainte <XSL:Nume şablon = "implicit" …> definiţie.

Următoarea, Du-te înapoi la noastre şablon de grilă. Înlocuiţi întreaga grilă şablon cu codul de mai jos. Acesta este foarte bine comentat, dar nu ezitaţi să mi e-mail sau lăsaţi comentarii pe blog-ul meu, dacă aveţi întrebări.

  <XSL:şablon nume="Grilă" meci="Rând[@Style = "Grila"]" modul de="itemstyle">

    <!--
      ContentMain.xsl trece CurPos şi ultimul.
      Vom folosi aceste să emită condiţional open şi închidere <tabel> Tag-uri.
    -->
    <XSL:Param nume="CurPos" />
    <XSL:Param nume="Ultima" />

    <!-- Următoarele variabile sunt nemodificat la ItemStyle.xsl standard -->
    <XSL:variabila nume="SafeImageUrl">
      <XSL:apel-şablon nume="OuterTemplate.GetSafeStaticUrl">
        <XSL:cu-param nume="UrlColumnName" Selectaţi="'ImageUrl'"/>
      </XSL:apel-şablon>
    </XSL:variabila>
    <XSL:variabila nume="SafeLinkUrl">
      <XSL:apel-şablon nume="OuterTemplate.GetSafeLink">
        <XSL:cu-param nume="UrlColumnName" Selectaţi="'LinkUrl'"/>
      </XSL:apel-şablon>
    </XSL:variabila>
    <XSL:variabila nume="DisplayTitle">
      <XSL:apel-şablon nume="OuterTemplate.GetTitle">
        <XSL:cu-param nume="Titlul" Selectaţi="@Title"/>
        <XSL:cu-param nume="UrlColumnName" Selectaţi="'LinkUrl'"/>
      </XSL:apel-şablon>
    </XSL:variabila>
    <XSL:variabila nume="LinkTarget">
      <XSL:Dacă test="@OpenInNewWindow = "True"" >_blank</XSL:Dacă>
    </XSL:variabila>

    <!--
      Aici vom defini o variabila, "tableStart".  Aceasta conţine HTML pe care le folosim pentru a defini deschiderea de masă, precum şi etichete de coloană.  Reţineţi că, dacă CurPos = 1, Acesta include HTML într-o etichetă CDATA.
      În caz contrar, Acesta va fi gol.

      Valoarea tableStart este emisă de fiecare dată când ItemStyle este numit prin intermediul ContentQueryMain.xsl.
    -->
    <XSL:variabila nume="tableStart">
      <XSL:Dacă test="$CurPos = 1">
        <![CDATA[
        <masă de frontieră = 1>
          <TR bgcolor = "albastru">
            <TD><culoare font = "alb"><b>Numele proiectului</b></font></TD>
            <TD alinia = "dreapta"><culoare font = "alb"><b>Data completă</b></font></TD>
            <TD alinia = "dreapta"><culoare font = "alb"><b>Buget</b></font></TD>
            <TD alinia = "dreapta"><culoare font = "alb"><b>Cheltuieli actuale</b></font></TD>
            <TD><culoare font = "alb"><b>Starea generală</b></font></TD>
          </TR>
        ]]>
      </XSL:Dacă>
    </XSL:variabila>

    <!--
      O altă variabilă, tableEnd defineşte pur şi simplu închiderea tag-ul de masă.

      Ca cu tableStart, este întotdeauna emisă.  De aceea, valoarea sa este asociată condiţional pe baza dacă am fost trecut ultimul rând de ContentQueryMain.xsl.
    -->
    <XSL:variabila nume="tableEnd">
      <XSL:Dacă test="$CurPos = $Last">
        <![CDATA[ </tabel> ]]>
      </XSL:Dacă>
    </XSL:variabila>

    <!--
      Întotdeauna emite conţinutul tableStart.  Dacă acest lucru nu este primul rând trecut la noi de ContentQueryMain.xsl, apoi am ştiu valoarea sa va fi necompletat.

      Dezactiva de ieşire evadarea deoarece când tableStart ea nu gol, Acesta include HTML reale, care ne-o dorim a fi prestate de către browser.  Dacă nu spunem XSL parser-ul pentru a dezactiva de ieşire evadarea, Acesta va genera chestii de genul"&lt;tabel&gt;" în loc de"<tabel>".
    -->
    <XSL:valoarea de Selectaţi="$tableStart" Dezactivează-ieşire-evadarea="da"/>


    <TR>
      <!--
      P:Project_x005F_x0020_Name P:Project_x005F_x0020_End_x005F_x0020_Date P:Project_x005F_x0020_Budget P:Project_x005F_x0020_Expenses P:Project_x005F_x0020_Status
      -->
      <TD>
        <XSL:valoarea de Selectaţi="@Project_x005F_x0020_Name"/>
      </TD>

      <TD Aliniaţi="dreptul de">
        <XSL:valoarea de Selectaţi="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD Aliniaţi="dreptul de">
        <XSL:apel-şablon nume="formatcurrency">
          <XSL:cu-param nume="valoarea" 
Selectaţi="@Project_x005F_x0020_Budget"></XSL:cu-param> </XSL:apel-şablon> </TD> <TD Aliniaţi="dreptul de"> <XSL:apel-şablon nume="formatcurrency"> <XSL:cu-param nume="valoarea" Selectaţi="@Project_x005F_x0020_Expenses">
</XSL:cu-param> </XSL:apel-şablon> </TD> <TD> <XSL:valoarea de Selectaţi="@Project_x005F_x0020_Status"/> </TD> <!-- Următoarele este comentat afară pentru a clarifica lucrurile. Cu toate acestea, aduceţi-l înapoi şi chestii-l într-un <TD> pentru a vedea efectul acesteia. --> <!-- <div id = "linkitem" clasa = "element"> <XSL:Dacă testul = "şir de caractere de lungime($SafeImageUrl) != 0"> <div clasa = "imagine-zona-stânga"> <o href = "{$SafeLinkUrl}" target = "{$LinkTarget}"> <img clasa = "imagine-lăţime fixă" src = "{$SafeImageUrl}"
alt = "{@ImageUrlAltText}"/> </o> </div> </XSL:Dacă> <div clasa = "link-ul-element"> <XSL:apel-şablon
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <o href = "{$SafeLinkUrl}"
target = "{$LinkTarget}" title = "{@LinkToolTip}"> <XSL:valoare-a selecta = "$DispXSLTitle" /> </o> <div clasa = "Descriere"> <XSL:valoare de select="@Description" /> </div> </div> </div>
--> </TR> <!-- Emite închidere tag-ul de masă. Dacă nu suntem pe ultimul rând, Acest lucru va fi necompletat. --> <XSL:valoarea de Selectaţi="$tableEnd" Dezactivează-ieşire-evadarea="da"/> </XSL:şablon> <XSL:şablon nume="formatcurrency"> <XSL:Param nume="valoarea" Selectaţi="0" /> <XSL:valoarea de Selectaţi='format de număr($valoarea, "$DDD,DDD,DDD.DD", "personal")' /> </XSL:şablon>

Standardul AAC/MOSS date intrare ecrane nu acceptă Cascading Drop-coborâşuri (sau alte intra-de comunicare)

ACTUALIZARE (04/2008): Această intrare mare blog prezinta o abordare bun javascript pe bază de la această problemă: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

ACTUALIZARE AL II-LEA: (04/2008): Acest blog intrare pare promiţătoare, precum şi: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Mai multe ori pe săptămână, Daca nu zilnic, utilizatori forum descrie o cerinţă care în mod normal ar fi îndeplinite prin intermediul picătură-coborâşuri în cascadă. De exemplu, Am două controale verticală:

  • Listă de SUA. Statele
  • Listă de SUA. Oraşe.

Ca responsabil UI furnizori, vrem să funcţioneze ca aceasta:

  • Paul selectează o SUA. stat din meniul vertical.
  • Acest lucru provoacă oraşele verticală pentru a filtra doar acele oraşe care aparţin statului selectate.
  • Paul selectează un oraş din această listă filtrată.

Nu există nici un suport de out-of--box pentru această caracteristică. de fapt, nu există nici un suport OOB pentru orice fel de comunicare directă intra-formular. Aceasta include programatic ascunde/activarea/dezactivarea domenii ca răspuns la schimbările de teren în altă parte pe formular.

Obiectivul reală a acestui articol pentru a descrie soluţii posibile, iar acestea sunt opţiunile ştiu ei:

  1. Dezvolta un tip de coloană particularizat. Ca o personalizat-coloana-developer, ai control deplin asupra lumii"" de acea coloană particularizat. Aveţi posibilitatea să implementaţi o cascading drop-jos în acest fel.
  2. Luaţi în considerare utilizarea flux de lucru. În unele cazuri, doriţi să se atribuie automat o valoare bazat pe un alt câmp valoarea câmpului. În acest caz, în mod normal, ar încerca să utilizezi o coloană calculată, dar unele ori, Acesta nu va lua doar treaba. Flux de lucru SharePoint Designer este un relativ administra-prietenos pentru dropping jos în cod şi visual studio. Dacă te duci acest traseu, Fiţi conştienţi de problema abordată de Acest articol (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Gestionari de eveniment: Ca flux de lucru, Aceasta este o soluţie de după-faptul. Dumneavoastră de tratare a evenimentului este o asamblare .NET (C#, VB.NET) SharePoint care trece controlul. Obiectul să dezvolte are acces la datele din lista (şi modelul de obiect întreg) şi puteţi face orice calcul necesare.
  4. Utilizați SharePoint Designer pentru a crea formulare particularizate de intrare. Nu am experienta directa cu această abordare, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Rola propriul funcţia de intrare de date ASP.NET (ca o pagină de web de sine stătătoare sau ca o parte web) şi de a folosi în schimb.

Dacă cineva ştie opţiuni de alte sau mai bună, vă rugăm să posta un comentariu şi voi actualiza corpul de acest post.

<final />

Technorati Tags:

Da/nu (casetă de selectare) filtrare în conţinut partea Web de interogare

Pentru a filtra pentru o interogare pentru da/nu bifaţi caseta intitulat "PG Milestone", Configurarea CQWP ca aceasta:

imagine

Acesta este un alt unul dintre aceste întrebări evident-o dată-te-ştiu-l, dar hard-to-find-an-answer-to: Cum se filtrează pe un da/nu caseta de selectare utilizaţi partea web de interogare conținut.

Primul rezultat de căutare Am găsi utilizând termenul de căutare "filtru da/nu conţinut interogare web part" este greu de greşit, m-am gândit aş pune acest lucru acolo sus şi a vedea dacă se poate înlocui rezultatul incorecte în rezultatele de căutare tipic.

Este destul de usor: Adevărat valori = "1" şi valori false este egal cu "1" (destul de retro, de fapt).

În exemplul de mai sus, Am creat site-ul coloană de tip da/nu" (casetă de selectare)" numit "PG piatră de hotar". Am adăugat-o la o bibliotecă de cod, încărcat câteva documente, setaţi valoarea pentru un cuplu şi testat-o.

<final />