Månedligt arkiv: December 2007

Min søn hacket Gamespot

Så, her til morgen, min søn er fast besluttet på at se en alder tretten begrænset Halo 3 video på Gamespot. Jeg er udenfor skovle sne, så jeg ikke er der til at hjælpe eller hindre. Nødvendighed er mor til opfindelsen og alt det … Han har et eureka! øjeblik. Han indser at selvom Gamespot ønsker ham til at indtaste sit Real fødselsdato, han kan faktisk komme ind enhver fødselsdato han ønsker. Når han indså, at, han gjorde sig gammel nok til at se videoen.

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

Søndag Funny: “Det er udskrivning skrald”

På mit første job ud af college i 1991, Jeg var heldig at arbejde for en produktionsvirksomhed med 13 Steder, ikke herunder sin corporate HQ i New Jersey. Jeg kom lige når virksomheden rullende ud en ny ERP system. Vi var en lille IT-afdelingen af omkring ti personer helt, hvoraf to rejse ikke. En del af projektet involverede udskiftning IBM System 36 kasser med HP hardware og HPUX. Alle brugte grønne rør adgang til systemet.

Projektet ruller langs og jeg er sendt ned til Baltimore med en ny medarbejder, Jeff. Vores opgave var at magten op boksen Unix, Sørg for at o/s kørte, installere ERP-systemet, konfigurere ERP, uddanne folk på ERP og gøre brugerdefinerede arbejde for folk på stedet. (Det var et drømmejob, især kommer lige ud af college). Før kunne vi virkelig kommer fra jorden, Vi havde brug for til at pakke alle de grønne rør, Læg dem på skriveborde og wire dem. Og den bedste del var, at vi måtte iføre os RJ11-stik.

For anden grund, som jeg aldrig har forstået og faktisk aldrig tænkt på at spørge om dengang, Vi havde haft nogle kontraherende selskab komme og køre kabel i hele anlægget, men vi har ikke haft dem sætte på stik. Så, der var en "patch box" med snesevis af umærket kabler i computerrummet"" og disse snaked rundt om bygningen til forskellige steder i bygningen.

Vi arbejdede os igennem det i løbet af en weekend, test hver ledning, at sætte på en stik (og sørg for det var lige vs. krydsede), at sikre bit indstillinger på den grønne rør og printere var korrekte, mærkning ledninger, og sørg for at "getty" var kører korrekt for hver havn, og formentlig en tusind andre ting, jeg har undertrykt siden da. Det hele kom sammen ganske pænt.

Men, der var en vigtig kabel, som vi ikke kunne finde ud. Anlægget i Baltimore havde et forhold til en warehousing placering i New Jersey. Nogle ordrer i Baltimore sendes ud af denne placering. Der var to ledninger, som vi havde til at forbinde til boksen HPUX: en grøn slange og en printer. Den grønne tube var let, men printeren forvandlet til en tre-ugers mareridt.

Hvis du ikke kender det, eller har undertrykt det, beskæftiger sig med grønne rør og printere på denne måde, der er forskellige muligheder, som du håndtere ved at angive forskellige stifter. 8-bit, 7-bit, paritet (selv/ulige/ingen), sandsynligvis andre. Hvis du får en af disse indstillinger forkert, tube eller printeren stadig viser ting, men det vil være total volapyk, eller vil det være volapyk med en masse af genkendelige ting i mellem. Selvfølgelig, disse nåle er svært at se og skal indstilles ved hjælp af en lille flad-kant skruetrækker. Og de er aldrig standard.

Vi oprette først af mange hurtige opkald med NJ fyr (en gråsprængt computer hater, der sandsynligvis forbander os den dag i dag). Vi fik den grønne tube arbejder temmelig hurtigt, men vi kunne ikke få printeren til at arbejde. Det holdt "udskrivning skrald". Vi ville skabe en ny RJ11 stik, skifte mellem krydsede og lige. Vi ville slette porten og oprettes igen i Unix. Vi gik gennem den vanskelige opgave med at have ham forklare os pin konfiguration på printeren, aldrig rigtig sikker på, hvis han gjorde det korrekt.

Det er på tide at gå live, alt i Baltimore summende, men vi kan ikke få den forbandede printer i NJ til at arbejde! Vi har udtømt alle muligheder med undtagelse af kørsel tilbage til NJ til at arbejde på printeren i person. At undgå alt det drivende, vi endelig spørge ham til fax os hvad han bliver, når det er "skrald", håber at måske der vil være nogle fingerpeg i det skrald, der vil fortælle os, hvad vi laver forkerte.

Da vi fik fax, Vi vidste straks, hvad der var galt. Se, vores metode til at teste, om vi havde konfigureret en printer korrekt var til at udstede en "lp" kommandoen som dette:

lp/etc/passwd

Dybest set, Vi udskrives unix password fil. Det er altid til stede og ud af boksen, altid kun én side. Du standard Unix password fil ser nogenlunde sådan her:

Smith:*:100:100:8A-74(Office):/hjem/smith:/usr/bin/sh gæst:*:200:0::/hjem/gæst:/usr/bin/sh  

Vi havde været udskrivning ud password fil igen og igen i flere uger og det var udskrivning korrekt. Dog, til slutbrugeren, Det var "udskrivning skrald".

</slutningen>

Endnu en anden netværk legitimationsoplysninger multi udfordring problem og løsning

Min klient har for nylig installeret en magisk enhed fra Enebær der tilsyneladende udskiftet deres gamle Cisco network load balancer (NLB). På omtrent samme tidspunkt, Vi har installeret en hotfix for at løse en arbejdsproces problem.

En dag eller to senere, Vi har bemærket en problem, da vi åbnede udbyderen af delte (SSP). Vi kunne komme til det., men vi ville blive udfordret for et bruger-ID og password mangedobbelt på hver side. Dette skete med de vigtigste portal app, heller ikke centrale administration. Naturligt, Vi vidste ikke, hvilken af to (Enebær eller hotfix) ville være spørgsmålet, selv om jeg stærkt mistænkt hotfixet, regne vi ikke havde installeret det rette.

Det viste sig at enebær havde en slags komprimeringsindstilling. En af de klædt tal over i netværket viste gruppe, at modregning. Som løst vores problem.

Det er ikke første gang, at kompression har været den egentlige årsag til et SharePoint-problem for mig. IIS-komprimering påvirkes en 3rd part værktøj fra de gode folk på The Dot Net fabrik for IE 6 browsere (IE 7 browsere arbejdede uden besvær).

Så, tilføje "kompression" til listen over risici.

</slutningen>

Kredit til: http://www.elfwood.com/art/s/h/sherry/death_colour.jpg.html

Tænker på at ændre Blogging Platform

Jeg startede min "blogging karriere" ved hjælp af Microsofts platform, og det har været godt for mig. Det er nemt at skrive, der er gode muligheder og widgets til styring af din "rum", anstændig web storage og så videre.

Dog, Jeg faldt virkelig bare på MS løsningen med næsten ingen planlægning. At alene opkald for mig at vurdere hvor jeg er og hvor jeg vil, med hensyn til en blogging platform. Der er også to vigtige begrænsninger, der plager mig lige nu vis-à-vis Windows Live Spaces.

Første, Jeg kan ikke få meget god statistik. Der er statistik men detaljen er ofte afkortet og ikke præsenteres på en måde, der giver mulighed for nogen form for analyse. Der ingen sortering eller eksport kapacitet. Jeg får mange blog ideer baseret på slags oplysninger, folk finder (eller især undlader at finde) når de søger på min blog. Det er meget svært at bruge liv rum til at.

Anden, der synes ikke at være nogen mekanisme til at "tjene penge på" et windows live space-blog. Faktisk, for at slippe af med MS annoncer (hvorfra jeg får ingen udbytte), Jeg skal faktisk betaler Microsoft. (Mindst, Thats hvordan jeg forstår det; Jeg har kunnet få endeligt svar på dette og spørgsmål som det).

Nu hvor jeg har fået et fast mønster og sæt af blogging vaner, Jeg ønsker at evaluere andre muligheder. Jeg har gjort nogle forskning og der er en masse valg, men jeg er spændt på, hvad andre mennesker, især andre i Fællesskabets SharePoint (som bloggere eller læsere), gerne bruge.

Hvis dette emne interesserer dig, og du har en mening eller er villige til at dele dine erfaringer, venligst efterlade en kommentar eller email mig direkte.

Tak!

<afslutning />

Technorati Tags:

SharePoint Designer E-mail sender ???? i en E-mail

Forum brugere spørge lejlighedsvis: Hvorfor sætter SharePoint Designer ???? ind i min e-mail i stedet for en feltværdi?

En af grundene til dette sker er fordi den variabel, som du henviser til er null.

Dette kan ske, fordi du forsøger at henvise til et felt fra den aktuelle vare"" men brugeren er aldrig trådt en værdi i at formularfelt.

<afslutning />

Technorati Tags:

Sammenlign / Test for tom datoer i SharePoint Designer Workflow

Scenario: I en arbejdsproces til SharePoint Designer, Du skal afgøre, om et date-felt er tomt.

Problemet: SPD giver ikke en direkte metode til sammenligning af datoer til andet end en dato. Du kan ikke oprette en betingelse, som denne: "Hvis [DateField] lig med Tom".

Løsning: Konvertere en dato til en streng. Bruge strengsammenligning til at bestemme, hvis datoen er tom.

Skærmbilleder:

De følgende skærmbilleder viser, hvordan du gør dette. I dette scenario, et felt på en vare, "Miljøtilladelser:Først tillade rykker dato", er indsendt og arbejdsprocessen brande i svar.

billede

billede

Noter:

Når jeg har prøvet dette, Jeg blev glædeligt overrasket over at erfare, at det virker. Jeg var bekymret for, at SharePoint Designer kan forbyde streng tildeling (Variabel:StringReminderDateDate) men det tillod det.

Jeg var også bekymret at tillader det, Værdien kan være null og enten sprænge WF på kørselstidspunktet eller måske hæve den globale temperatur 1/2 en grad, men disse bekymringer var ubegrundet.

</slutningen>

Technorati Tags:

Bar er stadig temmelig højt at udvide MOSS

I dag, Jeg arbejdede med en klient og beskriver hvordan du kan redigere webdelen indholdsforespørgsel og vise yderligere bits af oplysninger fra en indholdstype.

"Første, du konfigurere CQWP til at oprette forbindelse til dens datakilder, derefter eksportere du det til din arbejdsstation, ændre <CommonViewFields>, Upload, fjerne oprindelige og nu er det ' primet’ til at vise de andre kolonner. Næste, Åbn SharePoint designer, Naviger til site collection rod og Find ItemStyle.xsl. Kopiere en af skabelonerne som et nyttigt udgangspunkt. Gå tilbage og ændre CQWP at gøre brug af denne nye skabelon. Endelig, ændre skabelonen til at gengive dine nye felter! (Glem ikke at kontrollere det tilbage i så at andre brugere kan se resultaterne)."

Det er alle helt klart for mig (og de fleste af os SharePoint udvikler typer) Hvad der sker og hvordan det er helt rart, Virkelig, at data hentning aspekter af CQWP er så godt-separat fra data præsentation aspekter. Men, Det er ikke så let at forklare, er det?

<afslutning />

Vise indhold forespørgslen Web del resultater i et gitter / Tabel

Overblik og mål

Ud af boksen, MOSS’ Webdelen til indholdsforespørgsel (CQWP) viser sine resultater i en listeformat, ligner søgeresultater. Det er også muligt at få vist resultaterne i et gitter format (dvs. HTML-tabelformat). Gitter formater er bedre i nogle tilfælde. Jeg beskriver hvordan man opnår effekten i denne artikel.

Forretningsscenario

Jeg har arbejdet med en klienten på en enterprise-wide MOSS udrulningen. Vi har designet deres taksonomi, således at projekter er første klasses borgere i hierarkiet og har deres eget websted på øverste niveau. Projektledere opretholde en singleton liste over projekt oversigtsoplysninger, som titlen, budget, forventet afslutningsdato, resterende budget og andre opsummeringstype felter. Ved "singleton" Jeg mener en brugerdefineret SharePoint-liste garanteret indeholder kun ét element. Simplistisk, Det ser sådan ud:

billede

Den tekniske tilgang er meget det samme som beskrevet Her (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP bruger en XSL-transformering til at udlede HTML for browseren at gengive.

Jeg forestille altid resultatet før dykke ned i XSL, fordi XSL er et mareridt. Her er min ønskede resultat:

billede

HTML som dette genererer som følge:

<HTML>
 <kroppen>
 <Center>
 <tabel grænsen= 1>

<!-- Etiketter-->
 <Tr BgColor= blå>
 <TD><skrifttype farve= hvid><b>Projektnavn</b></skrifttype></TD>
 <TD Juster= højre><skrifttype farve= hvid><b>Komplet dato</b></skrifttype></TD>
 <TD Juster= højre><skrifttype farve= hvid><b>Budget</b></skrifttype></TD>
 <TD Juster= højre><skrifttype farve= hvid><b>Faktiske udgift</b></skrifttype></TD>
 <TD><skrifttype farve= hvid><b>Overordnede Status</b></skrifttype></TD>
 </Tr>

<Tr>
 <TD>Re-wire edb-rum.</TD>
 <TD Juster= højre>02/01/08</TD>
 <TD Juster= højre>22,500.00</TD>
 <TD Juster= højre>19,000.00</TD>
 <TD>I gang</TD>
 </Tr>

<Tr>
 <TD>Bestemmelse servere for SQL Upgrade</TD>
 <TD Juster= højre>04/01/08</TD>
 <TD Juster= højre>7,500.00</TD>
 <TD Juster= højre>0.00</TD>
 <TD>Planlagt</TD>
 </Tr>

</tabel>
 </Center>
 </kroppen>
</HTML>

Tilgang

Følg disse trin for at oprette gitteret:

  1. Identificere komponenter i gitteret (rækker/kolonner).
  2. Definere og oprette nødvendige webstedskolonner.
  3. Oprette sub websteder for projekter og singleton lister.
  4. Tilføje en CQWP til en webside og konfigurere den til at søge efter dine lister.
  5. Ændre den CQWP XML til at samle op på de yderligere kolonner.
  6. Redigere XSL-koden for at generere en tabel.

Jeg vil koncentrere mig om nummer seks. Tal en gennem fire er ligetil og noget, som enhver CQWP bruger allerede har gjort. Nummer fem er blevet veldokumenteret af andre, herunder denne udtømmende skærmbillede belæsset artikel fra MSDN Her (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) og Heather Solomon's blog Her (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Møtrikker og bolte

Indlede og gennemføre trin et til fem ifølge dokumentationen til MSDN og Heather Solomons artikel.

På dette punkt, du har tilføjet din CQWP til siden og du har din <CommonViewFields> konfigureret efter behov.

Efter de sædvanlige fremgangsmåde, Jeg får disse mellemliggende resultater:

1. Opret en indholdstype, en templatized brugerdefineret liste for denne indholdstype og to websteder. Her er den type indhold:

billede

Her er lokationsstrukturen:

billede

2. Tilføj CQWP efter at skabe mit projekt underordnede websteder og singleton projekt sammenfattende lister:

billede

3. Tilføj alle de yderligere oplysninger, vil jeg via den <CommonViewFields>:

        <Egenskaben Navn="CommonViewFields" type="streng">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</Egenskaben>

Bemærk, at jeg var nødt til at holde alle egenskabsfelter på én linje, eller det ville ikke arbejde (CQWP ville fortælle mig, at forespørgslen returnerede ingen emner).

4. På dette punkt, Vi er klar til at bevæge sig ud over i MSDN-artiklen og flip på over til Heather Solomons artikel. Følg hende trin starter i nærheden af trin #5 oprette en tilpasset / unghosted version af ItemStyle.xsl. Jeg følger Heathers rådgivning, op gennem skridt 11 og få disse mellemliggende resultater:

4.1: Nævne min XSL-skabelon som følger:

<XSL:skabelonnavn = "gitter" matche = "træk[@Style = 'Grid']" mode = "itemstyle">

Jeg ændre også lidt hende foreslog <XSL:for hver …> ved at tilføje en <BR /> Tag til at give et renere notering:

    <XSL:for hver Vælg="@*">
      P:<XSL:værdi af Vælg="Navn()" /><br/>
    </XSL:for hver>

4.2: Jeg redigere webdelen, gå til udseende og vælge mine "gitter" stil:

billede

Anvende ændringen og her er resultatet:

billede

Vi kan se fra ovenstående, at felterne, vi vil (Projektnavn, udgift, status, osv) er tilgængelige for os at bruge, når vi udsender HTML. Ikke kun det, men vi se de navne, som vi skal henvise til disse kolonner i XSL. For eksempel, Vi henviser til projektets Status som "Project_x005F_x0020_Name".

På dette punkt, Vi afgår fra Heather's blog og fra skuldrene af disse giganter, Jeg tilføje min egen lille smule.

ContentQueryMain.xsl

NOTE: Når du foretager ændringer til både ContentQueryMain.xsl og ItemStyle.xsl, Du skal tjekke disse filer tilbage i, før du kan se effekten af dine ændringer.

Henblik på nettet-gøre, MOSS bruger to forskellige XSL-filer til at producere de resultater, vi ser fra en CQWP. Til at generere den tidligere bit output, Vi ændrede ItemStyle.xsl. MOSS bruger faktisk en anden XSL-fil, ContentQueryMain.xsl til i forbindelse med ItemStyle.xsl til at generere sin HTML. Som navnet antyder, ContentQueryMain.xsl er "vigtigste" XSL, der styrer den samlede strøm af Oversættelse. Det gentager listen over alle de fundne genstande og passerer dem én efter én til skabeloner i ItemStyle.xsl. Vi vil ændre ItemStyle.xsl for at generere åbne <tabel> Tag før udsender den første række af data og lukning <tabel> Tag efter udsender den sidste række. At opnå dette, ContentQueryMain.xsl er ændret for at passere to parametre til vores "gitter" skabelon i ItemStyle.xsl, "sidste række" og "aktuel række". ItemStyle.xsl bruger disse betinget udleder de nødvendige tags.

Ved hjælp af Heather Solomon teknik, vi finde ContentQueryMain.xsl. Det er beliggende i samme sted som ItemStyle.xsl. Dette skærmbillede bør hjælpe:

billede

Vi har brug for at foretage følgende ændringer:

  • Ændre en XSL-skabelon, "CallItemTemplate" der faktisk påberåber sig vores gitter skabelon i ItemStyle.xsl. Vi vil passere to parametre til skabelonen gitter, således at det får de data, det skal generere betinget åbning og lukning <tabel> Tags.
  • Ændre en anden lidt af ContentQueryMain.xsl, der kalder "CallItemTemplate" at give den en "LastRow" parameter, således at LastRow kan blive videregivet til vores gitter skabelon.

Find den skabelon opkaldt "OuterTemplate.CallItemTemplate" identificeret af strengen:

  <XSL:skabelon Navn="OuterTemplate.CallItemTemplate">

Erstatte hele skabelonen som følger:

  <XSL:skabelon Navn="OuterTemplate.CallItemTemplate">
    <XSL:Param Navn="CurPosition" />

    <!--
      Tilføj "LastRow" parameter.
      Vi kun bruger det når varen stil pass i er "Grid".
    -->
    <XSL:Param Navn="LastRow" />

    <XSL:Vælg>
      <XSL:Hvornår test="@Style = 'NewsRollUpItem'">
        <XSL:anvende skabeloner Vælg="." mode="itemstyle">
          <XSL:med param Navn="EditMode" Vælg="$cbq_iseditmode" />
        </XSL:anvende skabeloner>
      </XSL:Hvornår>
      <XSL:Hvornår test="@Style = 'NewsBigItem'">
        <XSL:anvende skabeloner Vælg="." mode="itemstyle">
          <XSL:med param Navn="CurPos" Vælg="$CurPosition" />
        </XSL:anvende skabeloner>
      </XSL:Hvornår>
      <XSL:Hvornår test="@Style = 'NewsCategoryItem'">
        <XSL:anvende skabeloner Vælg="." mode="itemstyle">
          <XSL:med param Navn="CurPos" Vælg="$CurPosition" />
        </XSL:anvende skabeloner>
      </XSL:Hvornår>

      <!--
              Pass aktuelle position og lastrow gitter itemstyle.xsl skabelon.
              ItemStyle.xsl vil bruge det til at udlede åbne og lukke <tabel> Tags.
      -->
      <XSL:Hvornår test="@Style = 'Grid'">
        <XSL:anvende skabeloner Vælg="." mode="itemstyle">
          <XSL:med param Navn="CurPos" Vælg="$CurPosition" />
          <XSL:med param Navn="Seneste" Vælg="$LastRow" />
        </XSL:anvende skabeloner>
      </XSL:Hvornår>

      <XSL:ellers>
        <XSL:anvende skabeloner Vælg="." mode="itemstyle">
        </XSL:anvende skabeloner>
      </XSL:ellers>
    </XSL:Vælg>
  </XSL:skabelon>

Kommentarer beskriver formålet med ændringerne.

Selvfølgelig, "OuterTemplate.CallItemTemplate" hedder sig selv fra en anden skabelon. Find skabelonen ved at søge efter denne tekststreng:

<XSL:skabelon Navn="OuterTemplate.Body">

Gennemse vejledningen i OuterTemplate.Body og indsætte parameteren LastRow som følger (vist som en kommentar i kursiv):

<XSL:Call-skabelon Navn="OuterTemplate.CallItemTemplate">
  <XSL:med param Navn="CurPosition" Vælg="$CurPosition" />
  <!-- Indsætte parameteren LastRow. -->
  <XSL:med param Navn="LastRow" Vælg="$LastRow"/>
</XSL:Call-skabelon>

Efter alt dette, Endelig har vi ting sat rigtigt op, således at vores ItemStyle.xsl kan udsende <tabel> Tags på det rigtige sted.

ItemStyle.Xsl

NOTE: Igen, Tjek i ItemStyle.xsl efter at gøre eventuelle ændringer, så du kan se effekten af ændringerne.

Vi har to opgaver her:

  • Erstatte skabelonen hele gitteret. Du kan kopiere/indsætte nedefra.
  • Tilføje nogle mumbo jumbo udenfor skabelondefinitionen, der giver mulighed for "formatcurrency" skabelon til arbejde. (Du kan fortælle, at jeg har en svag håndtag på XSL).

Første, nær toppen af ItemStyle.xsl, Tilføj denne linje:

  <!-- Nogle mumbo jumbo, der gør det muligt for os at vise os. valuta. -->
  <XSL:decimal-format Navn="personale" ciffer="D" />

  <XSL:skabelon Navn="Standard" match="*" mode="itemstyle">

Bemærk at jeg tilføjede det direkte før den <XSL:skabelonnavn = "standard" …> definition.

Næste, gå tilbage til vores gitter skabelon. Erstatte skabelonen hele gitteret med koden nedenfor. Det er grundigt kommenterede, men tøv ikke med at email mig eller efterlade kommentarer på min blog, hvis du har spørgsmål.

  <XSL:skabelon Navn="Gitter" match="Række[@Style = 'Grid']" mode="itemstyle">

    <!--
      ContentMain.xsl passerer CurPos og sidste.
      Vi bruger disse til betinget udsender åbne og lukke <tabel> Tags.
    -->
    <XSL:Param Navn="CurPos" />
    <XSL:Param Navn="Seneste" />

    <!-- Følgende variabler er uændret fra den standard ItemStyle.xsl -->
    <XSL:variabel Navn="SafeImageUrl">
      <XSL:Call-skabelon Navn="OuterTemplate.GetSafeStaticUrl">
        <XSL:med param Navn="UrlColumnName" Vælg="'ImageUrl'"/>
      </XSL:Call-skabelon>
    </XSL:variabel>
    <XSL:variabel Navn="SafeLinkUrl">
      <XSL:Call-skabelon Navn="OuterTemplate.GetSafeLink">
        <XSL:med param Navn="UrlColumnName" Vælg="'LinkUrl'"/>
      </XSL:Call-skabelon>
    </XSL:variabel>
    <XSL:variabel Navn="DisplayTitle">
      <XSL:Call-skabelon Navn="OuterTemplate.GetTitle">
        <XSL:med param Navn="Titel" Vælg="@Title"/>
        <XSL:med param Navn="UrlColumnName" Vælg="'LinkUrl'"/>
      </XSL:Call-skabelon>
    </XSL:variabel>
    <XSL:variabel Navn="LinkTarget">
      <XSL:Hvis test="@OpenInNewWindow = "True"" >_blank</XSL:Hvis>
    </XSL:variabel>

    <!--
      Her definere vi en variabel, "tableStart".  Dette indeholder HTML-koden, som vi bruger til at definere åbningen af tabellen samt kolonneetiketterne.  Bemærk, at hvis CurPos = 1, Det indeholder HTML-koden i et CDATA-tag.
      Ellers, det vil være tom.

      Værdien af tableStart er emited hver gang ItemStyle kaldes via ContentQueryMain.xsl.
    -->
    <XSL:variabel Navn="tableStart">
      <XSL:Hvis test="$CurPos = 1">
        <![CDATA[
        <tabel border = 1>
          <TR bgcolor = "blå">
            <TD><font color = "hvid"><b>Projektnavn</b></skrifttype></TD>
            <TD align = "right"><font color = "hvid"><b>Komplet dato</b></skrifttype></TD>
            <TD align = "right"><font color = "hvid"><b>Budget</b></skrifttype></TD>
            <TD align = "right"><font color = "hvid"><b>Faktiske udgift</b></skrifttype></TD>
            <TD><font color = "hvid"><b>Overordnede Status</b></skrifttype></TD>
          </Tr>
        ]]>
      </XSL:Hvis>
    </XSL:variabel>

    <!--
      En anden variabel, tableEnd simpelthen definerer afsluttende tabel tag.

      Som med tableStart, Det er altid emited.  Dette er grunden til, at dens værdi er tildelt betinget baseret på om vi har været forbi den sidste række ContentQueryMain.xsl.
    -->
    <XSL:variabel Navn="tableEnd">
      <XSL:Hvis test="$CurPos = $Last">
        <![CDATA[ </tabel> ]]>
      </XSL:Hvis>
    </XSL:variabel>

    <!--
      Altid udsende indholdet af tableStart.  Hvis dette ikke er den første række videre til os af ContentQueryMain.xsl, så vi ved dens værdi bliver tom.

      Deaktiverer output flygter fordi når tableStart det ikke tom, Det omfatter faktiske HTML, som vi ønsker skal gengives af browseren.  Hvis vi ikke fortæller output XSL-parseren til at deaktivere flygter, det vil generere ting som"&lt;tabel&gt;" i stedet for"<tabel>".
    -->
    <XSL:værdi af Vælg="$tableStart" Deaktiver-output-undslippe="Ja"/>


    <Tr>
      <!--
      P:Project_x005F_x0020_Name Pedersen:Project_x005F_x0020_End_x005F_x0020_Date Pedersen:Project_x005F_x0020_Budget Pedersen:Project_x005F_x0020_Expenses Pedersen:Project_x005F_x0020_Status
      -->
      <TD>
        <XSL:værdi af Vælg="@Project_x005F_x0020_Name"/>
      </TD>

      <TD Juster="højre">
        <XSL:værdi af Vælg="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD Juster="højre">
        <XSL:Call-skabelon Navn="FormatCurrency">
          <XSL:med param Navn="værdi" 
Vælg="@Project_x005F_x0020_Budget"></XSL:med param> </XSL:Call-skabelon> </TD> <TD Juster="højre"> <XSL:Call-skabelon Navn="FormatCurrency"> <XSL:med param Navn="værdi" Vælg="@Project_x005F_x0020_Expenses">
</XSL:med param> </XSL:Call-skabelon> </TD> <TD> <XSL:værdi af Vælg="@Project_x005F_x0020_Status"/> </TD> <!-- Alle de følgende er kommenteret ud for at afklare tingene. Dog, Bring det tilbage og kram det ind i en <TD> at se dets effekt. --> <!-- <div id = "linkitem" Class = "element"> <XSL:Hvis test = "strenglængde($SafeImageUrl) != 0"> <div class = "billede-området-venstre"> <en href = "{$SafeLinkUrl}" Target = "{$LinkTarget}"> <IMG class = "billede-fast-bredde" src = "{$SafeImageUrl}"
alt = "{@ImageUrlAltText}"/> </en> </div> </XSL:Hvis> <div class = "link-vare"> <XSL:Call-skabelon
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <en href = "{$SafeLinkUrl}"
Target = "{$LinkTarget}" title = "{@LinkToolTip}"> <XSL:værdien af Vælg = "$DisplayTitle" /> </en> <div class = "beskrivelse"> <XSL:værdien af select="@Description" /> </div> </div> </div>
--> </Tr> <!-- Udsender afsluttende tabel tag. Hvis vi ikke er på den sidste række, Dette vil være tom. --> <XSL:værdi af Vælg="$tableEnd" Deaktiver-output-undslippe="Ja"/> </XSL:skabelon> <XSL:skabelon Navn="FormatCurrency"> <XSL:Param Navn="værdi" Vælg="0" /> <XSL:værdi af Vælg='format-nummer($værdi, "$DDD,DDD,DDD. DD", "personale")' /> </XSL:skabelon>

Standard WSS/MOSS Data Entry skærme understøtter ikke overlappende Drop-downs (eller andre intra-meddelelse)

OPDATERING (04/2008): Denne store blog viser en god javascript-baseret tilgang til problemet: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

UPDATE II: (04/2008): Denne blog ser lovende samt: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Flere gange om ugen, Hvis ikke daglige, forum brugere beskriver et krav, der normalt ville blive opfyldt via overlappende drop-downs. For eksempel, Jeg har to henlægge-nede Kontroller:

  • Liste over USA. stater
  • Liste over USA. byer.

Som ansvarlig UI udbydere, Vi vil have det til at fungere som denne:

  • Paul vælger en U.S. staten fra drop-down.
  • Dette forårsager byer drop-down til at filtrere kun de byer, der tilhører den valgte tilstand.
  • Paul vælger en by fra dette filtreret liste.

Der er ingen out-of-the-box understøttelse af denne funktion. Faktisk, der er ingen OOB support for enhver form for direkte handel-form kommunikation. Dette omfatter programmatisk skjule/aktivering/deaktivering felter feltændringer andre steder i formularen i forbindelse.

Det virkelige mål i denne artikel til at beskrive mulige løsninger og disse er valgmuligheder som jeg kender dem:

  1. Udvikle en brugerdefineret kolonnetype. Som en brugerdefineret-kolonne-udvikler, du har fuld kontrol over hele "verden" i den brugerdefinerede kolonne. Du kan implementere en cascading drop-down på den måde.
  2. Overvej at bruge arbejdsproces. I nogle tilfælde, du vil til automatisk at tildele en værdi til område baseret på en anden feltværdi. I dette tilfælde, du ville normalt forsøger at bruge en beregnet kolonne, men nogle gange, det få bare ikke arbejdet gjort. SharePoint Designer arbejdsprocessen er en relativt administrere-venligt alternativ til at droppe ned til kode og visual studio. Hvis du gå denne vej, være opmærksomme på spørgsmålet løses ved denne artikel (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Hændelseshandlere: Ligesom arbejdsproces, Dette er en efter-the-fact løsning. Hændelseshandleren er en .NET forsamling (C#, VB.NET) til hvilke SharePoint passerer kontrol. Det objekt, du udvikler har adgang til data fra listen (og hele objektmodellen) og kan gøre eventuelle nødvendige beregning.
  4. Brug SharePoint Designer til at oprette brugerdefinerede blanketter. Jeg har ikke direkte erfaring med denne tilgang, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Roll din egen ASP.NET data entry funktion (som en stand-alone webside eller som en webdel) og bruge det i stedet.

Hvis nogen kender andre og/eller bedre muligheder, Skriv venligst en kommentar og jeg vil opdatere kroppen af dette indlæg.

<afslutning />

Technorati Tags:

Ja/Nej (afkrydsningsfeltet) filtrering i webdelen til indholdsforespørgsel

Til at filtrere efter en forespørgsel for ja/ingen afkrydsningsfeltet ret "PG milepæl", konfigurere CQWP som denne:

billede

Dette er endnu en af de indlysende-én gang-du-ved-it men hard-to-find-an-answer-to spørgsmål: Sådan filtreres på et ja/ingen afkrydsningsfelt ved hjælp af webdelen indholdsforespørgsel.

Først søgeresultat Jeg finde ved hjælp af den ransage periode "filter ja/nej indholdsforespørgsel webdel" er flade ud galt, så jeg tænkte ville jeg sætte dette deroppe og se, hvis det kan erstatte den forkert resultat i typiske søgeresultater.

Det er ganske let: Sande værdier = "1" og falske værdier lige ikke "1" (smukke retro, faktisk).

I eksemplet ovenfor, Jeg har oprettet webstedskolonne af typen ja/nej" (afkrydsningsfeltet)" navngivne "PG milepæl". Jeg har tilføjet det til en doc bibliotek, uploadet et par dokumenter, angive værdien for et par og prøvet det.

<afslutning />