Månadsarkiv: December 2007

Min Son hackad Gamespot

Så, i morse, min son är fast besluten att se en ålder-tretton begränsad Halo 3 video på GameSpot. Jag är utanför skotta snö, så jag inte är där för att hjälpa eller hindra. Nöden är mamma med uppfinning med alla … Han har en eureka! ögonblick. Han inser att trots att Gamespot vill att han ska ange hans verkliga födelsedatum, han kan faktiskt gå in någon födelsedatum som han vill. När han insåg att, Han gjorde sig tillräckligt gammal för att se videon.

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

Söndag Funny: “Det är utskrift sopor”

På mitt första jobb av college i 1991, Jag hade turen att arbeta för ett tillverkande företag med 13 platser, med dess corporate HQ till New Jersey. Jag gick precis när företaget rulla ut ett nytt ERP-system. Vi var en liten IT-avdelningen av cirka tio personer alldeles, varav två flyttats inte. Del av projektet arbetar ersätter IBM-systemet 36 boxar med HP-maskinvara och HPUX. Alla brukade gröna rör tillgång till systemet.

Projektet rullar längs och jag skickade till Baltimore med en ny medarbetare, Jeff. Vår uppgift var att driva upp rutan Unix, se till o/s var igång, installera affärssystem, Konfigurera ERP, utbilda människor på ERP och göra egna arbete för folk på plats. (Detta var ett drömjobb, särskilt kommer rakt från college). Innan vi kunde verkligen få igång, Vi behövs för att packa upp alla gröna rören, Lägg dem på skrivbord och koppla dem. Och det bästa var att vi hade att sätta RJ11-kontakter på oss själva.

Av någon anledning som jag aldrig förstått och trodde faktiskt aldrig att fråga om vid tidpunkten, Vi hade haft vissa upphandlande företag komma och köra kabel i hela anläggningen, men vi hade inte dem lägga på kontakter. Så, Det fanns en "patch box" med dussintals av omärkta kablar i datasalen"" och dessa ormade runt hela byggnaden till olika platser i byggnaden.

Vi arbetat oss igenom det under loppet av en helg, testa varje tråd, att sätta på en koppling (se till att det var raka vs. korsade), att säkerställa bitinställningarna på gröna rör och skrivare var korrekta, märkning trådar, att se till att "getty" var körs på rätt sätt för varje port och förmodligen tusen andra saker att jag har undertryckt sedan dess. Det hela kom ihop ganska fint.

Men, Det var en viktig kabel som vi inte kunde lista ut. Anläggningen i Baltimore hade en relation med en lagerhållning plats i New Jersey. Vissa beställningar i Baltimore transporterades från denna plats. Det fanns två ledningar som vi hade att ansluta till rutan HPUX: en grön tub och en skrivare. Gröna röret var lätt, men skrivaren förvandlats till en tre veckors mardröm.

Om du inte vet det, eller har undertryckt det, hantera gröna rör och skrivare detta sätt, Det finns olika alternativ som du ta itu med genom att ange olika pins. 8-lite, 7-lite, paritet (jämn/udda/ingen), förmodligen andra. Om du får en av dessa inställningar fel, röret eller skrivare visar fortfarande saker, men blir det totala rotvälska, eller det blir rotvälska med en massa att känna igen saker i mellan. Självklart, dessa stift är svårt att se och måste ställas in med hjälp av en liten platt kant skruvmejsel. Och de är aldrig standard.

Vi satt upp först av många snabba samtal med NJ killen (en gråhårig dator-hatare som förmodligen förbannelser oss i dag). Vi fick gröna röret arbeta ganska snabbt, men vi kunde inte få skrivaren att fungera. Det höll "utskrift skräp". Vi vill skapa en ny RJ11-kontakt, växla mellan korsade och raka. Vi skulle ta bort porten och återskapas i Unix. Vi gick igenom den mödosamma uppgiften att att ha honom förklara för oss pin-konfiguration på skrivaren, aldrig riktigt säker på om han gjorde det korrekt.

Det är på tiden att gå live, allt i Baltimore nynna, men vi kan inte få den förbannade skrivaren i NJ att arbeta! Vi har uttömt alla möjligheter med undantag för driving tillbaka upp till NJ att arbeta på skrivaren i person. Att undvika allt som drivande, vi slutligen be honom att faxa oss vad han får när det är "skräp", hoppas kanske att någon ledtråd i det skräp som kommer att berätta vad vi gör fel.

När vi fick fax, Vi visste genast vad som var fel. Se, Vår metod att testa om vi hade korrekt konfigurerad skrivare var att utfärda en "lp" kommandot så här:

LP/etc/passwd

I princip, Vi skrivs ut filen unix lösenord. Det är alltid närvarande och ur lådan, alltid bara en sida. Du standard Unix lösenordsfil ser ut så här:

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

Vi hade skriva ut lösenordsfilen om och om igen i flera veckor och det var tryck korrekt. Men, för slutanvändaren, Det var "utskrift skräp".

</slutet>

Ännu ett annat nätverk autentiseringsuppgifter multi Challenge frågan och lösning

Min klient nyligen installerat en magiska enhet från Juniper som tydligen ersatt deras gamla Cisco nätverk för belastningsutjämning (NLB). Vid ungefär samma tid, Vi installerade en snabbkorrigeringen att lösa ett arbetsflöde problem.

En dag eller två senare, Vi har märkt ett problem när vi delade tjänsteleverantören (SSP). Vi kunde få till det, men vi vill bli utmanad användar-ID och lösenord många gånger på varje sida. Detta skedde inte med den viktigaste portalen app, inte heller central administration. Naturligt, Vi visste inte vilken av två (Enbär eller snabbkorrigering) skulle vara problemet, även om jag starkt misstänkt snabbkorrigeringen, räkna vi inte hade installerat det helt rätt.

Det visade sig att Juniper hade någon form av komprimering. En av de klädd siffror över i nätverket visade grupp att ställa ut. Som löste våra problem.

Detta är inte första gången som komprimering har varit den grundläggande orsaken till ett SharePoint problem för mig. IIS-komprimering påverkas negativt en 3: e part verktyg från de goda människorna på Dot Net fabrik för IE 6 webbläsare (IE 7 webbläsare fungerade utan problem).

Så, Lägg till "komprimering" i listan risker.

</slutet>

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

Funderar på att ändra Blogging plattform

Jag började min "blogging karriär" med hjälp av Microsofts plattform och det har varit bra för mig. Det är lätt att lägga, Det finns bra alternativ och widgets för att hantera din "space", anständig webb lagring och så vidare.

Men, Jag föll egentligen bara i MS lösningen med nästan ingen planering. Att enbart samtal för mig att utvärdera där jag är och var jag ska, i form av en blogging plattform. Det finns också två viktiga begränsningar som bryr mig rätt nu vis-à-vis Windows Live Spaces.

Första, Jag kan inte få mycket bra statistik. Det finns statistik men detaljerna är ofta trunkerade och inte presenteras på ett sätt som gör det möjligt för någon form av analys. Det ingen sortering eller export förmåga. Jag får många blogg idéer baserat på typ av information tycker (eller särskilt misslyckas med att hitta) När de söker min blogg. Det är mycket svårt att använda liv utrymmen för att.

Andra, Det verkar inte finnas någon mekanism för att "tjäna pengar på" en windows live space blogg. I själva verket, för att bli av MS annonser (som jag drar inte nytta av), Jag måste faktiskt betala Microsoft. (Minst, Det är hur jag förstår det; Jag har kunnat få definitiva svar på detta och frågor som det).

Nu när jag har fått ett etablerat mönster och uppsättning av blogging vanor, Jag vill utvärdera andra alternativ. Jag har gjort lite forskning och det finns många val, men jag är nyfiken på vad andra människor, särskilt andra SharePoint (som bloggare och läsare), Gilla att använda.

Om detta ämne intresserar dig och du har en åsikt eller är villiga att dela din upplevelse, Vänligen lämna en kommentar eller maila mig direkt.

Tack!

<slutet />

Technorati Tags:

SharePoint Designer Email skickar ???? i ett e-postmeddelande

Forumanvändare be ibland: Varför har SharePoint Designer sätta ???? i min e-post i stället för ett fältvärde?

En anledning detta händer är att den variabel som du hänvisar till är null.

Detta kan hända eftersom du försöker referera till ett fält från den aktuella artikeln"" men användaren trädde aldrig ett värde i det fältet.

<slutet />

Technorati Tags:

Jämför / Test för Tom datum i SharePoint Designer arbetsflöde

Scenariot: I ett arbetsflöde för SharePoint Designer, måste du bestämma om ett date-fält är tomt.

Problem: SPD ger inte en direkt metod för att jämföra datum till något annat än ett datum. Du kan inte skapa ett villkor som denna: "Om [DateField] är lika med Tom".

Lösning: Konvertera datum till en sträng. Använda strängjämförelse för att avgöra om det är blankt.

Skärmdumpar:

Följande skärmdumpar Visa hur man gör detta. I det här scenariot, ett fält på ett objekt, "Miljötillstånd:Först tillåta påminnelsedatum", lämnas och arbetsflödet bränder svar.

bild

bild

Anteckningar:

När jag försökt den här, Jag blev glatt förvånad över att det fungerar. Jag var orolig att SharePoint Designer inte kan tillåta sträng tilldelningen (Variabel:StringReminderDateDate) men det att det.

Jag var också berörda som gör det möjligt, värdet kan vara null och antingen spränga WF under körning eller kanske höja den globala temperaturen 1/2 en viss, men dessa farhågor var ogrundade.

</slutet>

Technorati Tags:

Baren är fortfarande ganska hög för att förlänga MOSS

Idag, Jag arbetar med en klient och som beskriver hur du ändrar webbdelen Innehållsfråga och Visa ytterligare bitar av information från en innehållstyp.

"Första, du konfigurerar CQWP att ansluta till dess datakällor, sedan du exportera det till din arbetsstation, ändra <CommonViewFields>, Ladda upp, ta bort ursprungliga och nu är det "primas’ att visa de andra kolumnerna. Nästa, Öppna SharePoint designer, Navigera till platsen samling roten och leta upp ItemStyle.xsl. Kopiera en av mallarna som en bra utgångspunkt. Gå tillbaka och ändra CQWP att göra använda av den här nya mallen. Slutligen, ändra mallen för att göra ditt nya fält! (Glöm inte att kolla det tillbaka i så att andra användare kan se resultaten)."

Det är allt helt klart för mig (och de flesta av oss SharePoint developer typer) vad som händer och hur det är ganska trevligt, Verkligen, att data hämtning aspekter av CQWP är så väl-avskiljer från data presentation aspekter. Men, Det är inte så lätt att förklara, är det?

<slutet />

Visa innehåll Web del frågeresultaten i ett rutnät / Tabell

Översikt och mål

Ur lådan, MOSS’ Webbdelen för innehållsfråga (CQWP) visar resultatet i ett listformat, liknar sökresultat. Det är också möjligt att visa resultaten i ett rutnätsformat (dvs. HTML-tabellformat). Rutnät format är bättre i vissa situationer. Jag beskriva hur man kan uppnå denna effekt i denna artikel.

Affärsscenario

Jag har arbetat med en klient på en företagsomfattande MOSS utbyggnaden. Vi har utformat sina taxonomi så att projekten är första klassens medborgare i hierarkin och har sina egna högsta nivån webbplats. Projektledare upprätthålla en singleton lista över projektsammanfattning, som titel, budget, förväntade slutförandedatum, återstående budget och andra sammanfattningstyp fält. Genom "singleton" Jag menar en anpassad SharePoint-lista garanteras att innehålla endast ett objekt. Något förenklat, Det ser ut så här:

bild

Den tekniska lösningen är ungefär samma som beskrivs Här (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP använder en XSL-transformeringen att släppa ut HTML-koden för webbläsaren att göra.

Jag alltid föreställa sig resultatet innan dykning i XSL eftersom XSL är en mardröm. Här är min önskat resultat:

bild

HTML som denna genererar resultatet:

<HTML>
 <organ>
 <Center>
 <tabell gränsen= 1>

<!-- Etiketter-->
 <TR bgcolor= blå>
 <TD><teckensnitt färg= vit><b>Projektets namn</b></teckensnitt></TD>
 <TD justera= höger><teckensnitt färg= vit><b>Komplett datum</b></teckensnitt></TD>
 <TD justera= höger><teckensnitt färg= vit><b>Budget</b></teckensnitt></TD>
 <TD justera= höger><teckensnitt färg= vit><b>Faktiska utgifter</b></teckensnitt></TD>
 <TD><teckensnitt färg= vit><b>Övergripande Status</b></teckensnitt></TD>
 </TR>

<TR>
 <TD>Re-tråd datasal.</TD>
 <TD justera= höger>02/01/08</TD>
 <TD justera= höger>22,500.00</TD>
 <TD justera= höger>19,000.00</TD>
 <TD>Pågående</TD>
 </TR>

<TR>
 <TD>Bestämmelse servrar för SQL-uppgradering</TD>
 <TD justera= höger>04/01/08</TD>
 <TD justera= höger>7,500.00</TD>
 <TD justera= höger>0.00</TD>
 <TD>Planerade</TD>
 </TR>

</tabell>
 </Center>
 </organ>
</HTML>

Tillvägagångssätt

Följ dessa steg för att skapa rutnätet:

  1. Identifiera delarna av nätet (rader/kolumner).
  2. Definiera och skapa nödvändiga webbplatskolumner.
  3. Skapa sub-webbplatser för projekt och singleton listor.
  4. Lägga till CQWP till en webbsida och konfigurera den för att söka efter dina listor.
  5. Ändra den CQWP XML att samla upp ytterligare kolumner.
  6. Ändra XSL för att generera en tabell.

Jag kommer att koncentrera sig på nummer sex. Nummer ett genom fyra är rättfram och något som alla CQWP användare har redan gjort. Nummer fem har varit väl dokumenterade av andra inklusive denna uttömmande skärm-shot lastade artikel från MSDN Här (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) och Heather Solomons blogg Här (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Och muttrar

Påbörja och genomföra steg ett till fem per i MSDN-dokumentationen och Heather Solomons artikel.

Vid denna punkt, du har lagt till din CQWP till sidan och du har din <CommonViewFields> konfigurerad som krävs.

Efter de vanliga stegen, Jag får dessa mellanliggande resultat:

1. Skapa en innehållstyp, en mallbaserad anpassad lista för innehållstypen och två platser. Här är innehållstypen:

bild

Här är webbplatsstrukturen:

bild

2. Lägg till CQWP efter att skapa mitt projekt underwebbplatser och singleton projektet Sammanfattning listor:

bild

3. Lägg till alla de kompletteringar som jag vill via den <CommonViewFields>:

        <Egenskapen Namn="CommonViewFields" typ="sträng">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</Egenskapen>

Observera att jag var tvungen att hålla alla egenskapsfält på en linje eller det skulle inte fungera (CQWP skulle berätta för mig att frågan returnerade inga träffar).

4. Vid denna punkt, Vi är redo att gå bortom MSDN-artikeln och flip Heather Solomons artikel. Följ hennes steg börjar nära steg #5 skapa en anpassad / unghosted version av ItemStyle.xsl. Jag följa Heathers råd, upp genom steg 11 och få dessa mellanliggande resultat:

4.1: Namnge min XSL-mall som följer:

<XSL:mallens namn = "Grid" matcha = "rad[@Style = "Rutnät"]" läge = "itemstyle">

Jag ändra också något henne föreslog <XSL:för varje …> genom att lägga till en <br /> tag till ger en renare lista:

    <XSL:för varje Välj="@*">
      P:<XSL:värdet av Välj="Namn()" /><br/>
    </XSL:för varje>

4.2: Jag ändra webbdelen, gå till utseende och välja min "Grid" stil:

bild

Applicera ändringen och här är resultatet:

bild

Vi kan se av ovanstående att områdena som vi vill (Projektets namn, bekostnad, status, m.m.) finns tillgängliga för oss att använda när vi släpper ut HTML. Inte bara det, men vi ser namnen som vi måste referera till kolumner i XSL. Till exempel, Vi referera till projektets Status som "Project_x005F_x0020_Name".

Vid denna punkt, Vi avgår från Heathers blogg och dessa jättar axlar, Jag lägger min egen lite.

ContentQueryMain.xsl

ANMÄRKNING: När du gör ändringar i såväl ContentQueryMain.xsl som ItemStyle.xsl, du behöver kontrollera filerna igen innan du ser effekten av dina ändringar.

För grid-making, MOSS använder två olika XSL-filer för att producera resultat vi ser från en CQWP. Att generera den föregående stycke av produktionen, vi ändrade ItemStyle.xsl. MOSS faktiskt använder en annan XSL-fil, ContentQueryMain.xsl att i samband med ItemStyle.xsl att generera de HTML-. Som namnet antyder, ContentQueryMain.xsl är den "viktigaste" XSL som styr det totala flödet av översättning. Det gà ¥ r igenom alla Funna objekt och skickar dem en i taget till mallar i ItemStyle.xsl. Vi ska ändra ItemStyle.xsl för att generera öppen <tabell> tag innan du släpper ut den första raden med data och stängning <tabell> tag efter avger den sista raden. Åstadkomma detta, ContentQueryMain.xsl är modifierad för att skicka två parametrar till våra "grid" mallen i ItemStyle.xsl, "sista raden" och "aktuella raden". ItemStyle.xsl använder dessa villkorligt avge de nödvändiga taggarna.

Med Heather Solomons teknik, Vi hittar ContentQueryMain.xsl. Det är beläget på samma plats som ItemStyle.xsl. Denna skärmdump bör hjälpa:

bild

Vi måste göra följande ändringar:

  • Ändra en xsl-mall, "CallItemTemplate" som åberopar faktiskt vår rutnät mall i ItemStyle.xsl. Vi kommer att skicka två parametrar till mallen rutnät så att det får de uppgifter som den behöver för att generera villkorligt öppning och stängning <tabell> Märken.
  • Ändra en annan bit av ContentQueryMain.xsl som kallar den "CallItemTemplate" att passera en "LastRow" parametern så att LastRow kan överföras till vår rutnät mall.

Leta upp mallen heter "OuterTemplate.CallItemTemplate" identifieras av strängen:

  <XSL:mall Namn="OuterTemplate.CallItemTemplate">

Ersätta hela mallen som följer:

  <XSL:mall Namn="OuterTemplate.CallItemTemplate">
    <XSL:param Namn="CurPosition" />

    <!--
      Lägg till "-LastRow" parametern.
      Vi använder det bara när objekt stil passet i är "Rutnät".
    -->
    <XSL:param Namn="LastRow" />

    <XSL:Välj>
      <XSL:När Testa="@Style = "NewsRollUpItem"">
        <XSL:tillämpa-mallar Välj="." läge="itemstyle">
          <XSL:med-param Namn="EditMode" Välj="$cbq_iseditmode" />
        </XSL:tillämpa-mallar>
      </XSL:När>
      <XSL:När Testa="@Style = "NewsBigItem"">
        <XSL:tillämpa-mallar Välj="." läge="itemstyle">
          <XSL:med-param Namn="CurPos" Välj="$CurPosition" />
        </XSL:tillämpa-mallar>
      </XSL:När>
      <XSL:När Testa="@Style = "NewsCategoryItem"">
        <XSL:tillämpa-mallar Välj="." läge="itemstyle">
          <XSL:med-param Namn="CurPos" Välj="$CurPosition" />
        </XSL:tillämpa-mallar>
      </XSL:När>

      <!--
              Passera nuvarande position och lastrow till Grid itemstyle.xsl mallen.
              ItemStyle.xsl kommer att använda som att släppa ut öppen och stänga <tabell> Märken.
      -->
      <XSL:När Testa="@Style = "Rutnät"">
        <XSL:tillämpa-mallar Välj="." läge="itemstyle">
          <XSL:med-param Namn="CurPos" Välj="$CurPosition" />
          <XSL:med-param Namn="Senaste" Välj="$LastRow" />
        </XSL:tillämpa-mallar>
      </XSL:När>

      <XSL:Annars>
        <XSL:tillämpa-mallar Välj="." läge="itemstyle">
        </XSL:tillämpa-mallar>
      </XSL:Annars>
    </XSL:Välj>
  </XSL:mall>

Kommentarerna beskriva syftet med ändringarna.

Självklart, "OuterTemplate.CallItemTemplate" kallas sig från en annan mall. Leta upp mallen genom att söka efter denna textsträng:

<XSL:mall Namn="OuterTemplate.Body">

Bläddra igenom instruktionerna i OuterTemplate.Body och infoga parametern LastRow som följer (visas som en kommentar i kursiv stil):

<XSL:call-template Namn="OuterTemplate.CallItemTemplate">
  <XSL:med-param Namn="CurPosition" Välj="$CurPosition" />
  <!-- Infoga parametern LastRow. -->
  <XSL:med-param Namn="LastRow" Välj="$LastRow"/>
</XSL:call-template>

Efter allt detta, Vi har äntligen saker korrekt inställt så att våra ItemStyle.xsl kan avge <tabell> Taggar på rätt plats.

ItemStyle.Xsl

ANMÄRKNING: Igen, checka in ItemStyle.xsl efter att göra några ändringar så att du ser effekten av dessa förändringar.

Vi har två uppgifter här:

  • Ersätta hela rutnät mallen. Du kan klistra in underifrån.
  • Lägg till några rappakalja utanför mallens definition som gör "formatcurrency" mall att arbeta. (Du kan berätta att jag har ett svagt handtag på XSL).

Första, nära toppen av ItemStyle.xsl, Lägg till följande rad:

  <!-- Vissa rappakalja som gör det möjligt för oss att visa USA. valuta. -->
  <XSL:decimal-format Namn="personal" siffran="D" />

  <XSL:mall Namn="Standard" match="*" läge="itemstyle">

Obs att jag lagt det direkt innan de <XSL:mallens namn = "förvald" …> definition.

Nästa, gå tillbaka till vår rutnät mall. Ersätta hela rutnät mallen med koden nedan. Det är grundligt kommenterade, men tveka inte att maila mig eller lämna kommentarer på min blogg om du har frågor.

  <XSL:mall Namn="Rutnät" match="Rad[@Style = "Rutnät"]" läge="itemstyle">

    <!--
      ContentMain.xsl passerar CurPos och sista.
      Vi använder dessa villkorligt avge öppen och stänga <tabell> Märken.
    -->
    <XSL:param Namn="CurPos" />
    <XSL:param Namn="Senaste" />

    <!-- Följande variabler är oförändrad från den standard ItemStyle.xsl -->
    <XSL:variabel Namn="SafeImageUrl">
      <XSL:call-template Namn="OuterTemplate.GetSafeStaticUrl">
        <XSL:med-param Namn="UrlColumnName" Välj=""ImageUrl""/>
      </XSL:call-template>
    </XSL:variabel>
    <XSL:variabel Namn="SafeLinkUrl">
      <XSL:call-template Namn="OuterTemplate.GetSafeLink">
        <XSL:med-param Namn="UrlColumnName" Välj=""LinkUrl""/>
      </XSL:call-template>
    </XSL:variabel>
    <XSL:variabel Namn="DisplayTitle">
      <XSL:call-template Namn="OuterTemplate.GetTitle">
        <XSL:med-param Namn="Avdelning" Välj="@Title"/>
        <XSL:med-param Namn="UrlColumnName" Välj=""LinkUrl""/>
      </XSL:call-template>
    </XSL:variabel>
    <XSL:variabel Namn="LinkTarget">
      <XSL:om Testa="@OpenInNewWindow = "True"" >_blank</XSL:om>
    </XSL:variabel>

    <!--
      Här definierar vi en variabel, "tableStart".  Detta innehåller den HTML som vi använder för att definiera öppnandet av tabellen som kolumnetiketterna.  Observera att om CurPos = 1, den innehåller HTML i en CDATA-tagg.
      Annars, Det är tomt.

      Värdet på tableStart är emited varje gång ItemStyle kallas via ContentQueryMain.xsl.
    -->
    <XSL:variabel Namn="tableStart">
      <XSL:om Testa="$CurPos = 1">
        <![CDATA[
        <tabellkantlinjen = 1>
          <TR bgcolor = "blå">
            <TD><font color = "vit"><b>Projektets namn</b></teckensnitt></TD>
            <TD align = "rätt"><font color = "vit"><b>Komplett datum</b></teckensnitt></TD>
            <TD align = "rätt"><font color = "vit"><b>Budget</b></teckensnitt></TD>
            <TD align = "rätt"><font color = "vit"><b>Faktiska utgifter</b></teckensnitt></TD>
            <TD><font color = "vit"><b>Övergripande Status</b></teckensnitt></TD>
          </TR>
        ]]>
      </XSL:om>
    </XSL:variabel>

    <!--
      En annan variabel, tableEnd helt enkelt definierar avslutandet tabell tag.

      Som med tableStart, Det är alltid emited.  Detta är anledningen till dess vไrde tilldelas villkorligt baserat på huruvida vi har antagits den sista raden av ContentQueryMain.xsl.
    -->
    <XSL:variabel Namn="tableEnd">
      <XSL:om Testa="$CurPos = $Last">
        <![CDATA[ </tabell> ]]>
      </XSL:om>
    </XSL:variabel>

    <!--
      Släpper alltid ut innehållet i tableStart.  Om detta inte är den första raden som skickas till oss av ContentQueryMain.xsl, då vi vet sitt värde att vara tom.

      Avaktivera utgång fly eftersom när tableStart det inte tomma, den innehåller faktiska HTML som vi vill ska återges i webbläsaren.  Om vi inte berättar utgång XSL-tolken att avaktivera fly, Det kommer att generera sånt"&LT;tabell&gt;" i stället för"<tabell>".
    -->
    <XSL:värdet av Välj="$tableStart" Inaktivera-utdata-fly="Ja"/>


    <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:värdet av Välj="@Project_x005F_x0020_Name"/>
      </TD>

      <TD justera="rätt">
        <XSL:värdet av Välj="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD justera="rätt">
        <XSL:call-template Namn="FormatCurrency">
          <XSL:med-param Namn="värde" 
Välj="@Project_x005F_x0020_Budget"></XSL:med-param> </XSL:call-template> </TD> <TD justera="rätt"> <XSL:call-template Namn="FormatCurrency"> <XSL:med-param Namn="värde" Välj="@Project_x005F_x0020_Expenses">
</XSL:med-param> </XSL:call-template> </TD> <TD> <XSL:värdet av Välj="@Project_x005F_x0020_Status"/> </TD> <!-- Följande är bortkommenterad förklara saker. Men, föra den tillbaka och sånt det in i en <TD> att se dess effekt. --> <!-- <DIV id = "linkitem" Class = "element"> <XSL:om testa = "stränglängd($SafeImageUrl) != 0"> <div class = "image-området-left"> <ett href = "{$SafeLinkUrl}" Target = "{$LinkTarget}"> <IMG class = "image-fast bredd" src = "{$SafeImageUrl}"
Alt = "{@ImageUrlAltText}"/> </en> </div> </XSL:om> <div class = "länk-objekt"> <XSL:call-template
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <ett href = "{$SafeLinkUrl}"
Target = "{$LinkTarget}" title = "{@LinkToolTip}"> <XSL:värde-välja = "$DisXSLyTitle" /> </en> <div class = "Beskrivning"> <XSL:värdet av select="@Description" /> </div> </div> </div>
--> </TR> <!-- Avger avslutandet tabell tag. Om vi inte på den sista raden, Detta kommer att vara tom. --> <XSL:värdet av Välj="$tableEnd" Inaktivera-utdata-fly="Ja"/> </XSL:mall> <XSL:mall Namn="FormatCurrency"> <XSL:param Namn="värde" Välj="0" /> <XSL:värdet av Välj='format-nummer($värde, "$DDD,DDD,DDD.DD", "personal")' /> </XSL:mall>

Standard WSS/MOSS Data posten skärmar stöder inte CSS-listrutor (eller andra intra-meddelande)

UPPDATERING (04/2008): Denna stora bloggpost visar en bra javascript-baserade strategi för detta problem: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

UPPDATERING II: (04/2008): Denna bloggpost ser lovande ut samt: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Flera gånger i veckan, om inte dagligen, forumanvändare beskriva ett krav som normalt skulle uppfyllas via CSS-listrutor. Till exempel, Jag har två nedrullningsbara kontroller:

  • Lista över amerikanska. staterna
  • Lista över amerikanska. städer.

Som ansvarig UI leverantörer, Vi vill att det ska fungera så här:

  • Paul väljer en U.S. staten från drop-down.
  • Detta orsakar städerna nedrullningsbara att filtrera endast de städer som tillhör det markerade läget.
  • Paul väljer en stad från filtrerade listan.

Det finns inget out-of-the-box stöd för denna funktion. I själva verket, Det finns ingen OOB stöd för någon form av direkt intra-form kommunikation. Detta inkluderar programmässigt gömmer sig/aktivera/inaktivera fält som svar på ändringar i någon annanstans i formuläret.

Det verkliga målet för denna artikel till att beskriva möjliga lösningar och dessa är alternativ jag vet dem:

  1. Utveckla en anpassad kolumntyp. Som custom-kolumn-utvecklare, du har full kontroll över världen"" som den anpassade kolumnen. Du kan implementera en cascading droppa-ned så.
  2. Överväg att använda arbetsflödet. I vissa fall, vill du automatiskt tilldela ett värde till fält baserat på en annan fältvärden. I detta fall, normalt skulle du försöka använda en beräknad kolumn, men några gånger, det inte att bara få jobbet gjort. SharePoint Designer arbetsflöde är en relativt administrera-vänliga alternativ att släppa i koden och visual studio. Om du går den vägen, vara medveten om den fråga som ställdes av denna artikel (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Händelsehanterare: Som arbetsflödet, Detta är en efter-the-faktum lösning. Händelsehanteraren är en .NET församling (C#, VB.NET) till vilka SharePoint passerar kontroll. Objektet du utveckla har tillgång till data i listan (och hela objektmodellen) och kan göra alla nödvändiga beräkningar.
  4. Använda SharePoint Designer för att skapa anpassade formulär. Jag har direkt erfarenhet med detta synsätt, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Rulla dina egna ASP.NET data inresa funktion (som en fristående webbsida eller som en webbdel) och i stället använda som.

Om någon vet andra och bättre alternativ, posta en kommentar och jag ska uppdatera kroppen av detta inlägg.

<slutet />

Technorati Tags:

Ja/Nej (kryssrutan) filtrering i webbdelen för innehållsfråga

Att filtrera för en fråga för ja/inte kryssrutan rätt "PG milstolpe", Konfigurera CQWP såhär:

bild

Detta är ytterligare en av dessa uppenbara-en gång-du-vet-it men hard-to-find-an-answer-to frågor: Hur du filtrerar på en ja/inte kryssrutan med hjälp av webbdelen innehåll frågan.

Först SÖKRESULTAT Jag tycker med hjälp av sökord "innehåll ja/nej fråga filterwebbdel" platta ut fel, så jag trodde jag skulle sätta in detta uppe och se om det kan ersätta felaktiga resultatet i typiska sökresultat.

Det är helt enkelt: Sanna värden = "1" och falska värden lika inte "1" (Pretty retro, faktiskt).

I exemplet ovan, Jag skapade webbplatskolumn av typen "ja/nej (CheckBox)" namngivna "PG milstolpe". Jag la den till ett doc bibliotek, laddat upp några dokument, Ange värdet för ett par och testat det.

<slutet />