archivi mensili: Dicembre 2007

Mio figlio ha inciso Gamespot

Così, Questa mattina, mio figlio è determinato a vedere che un'età-tredici limitato Halo 3 video di GameSpot. Io sono fuori che spala neve, così io non sono lì per aiutare o ostacolare. La necessità è la madre dell'invenzione e tutto ciò che … Egli ha un eureka! momento. Egli si rende conto che anche se Gamespot lo vuole entrare nel suo reale Data di nascita, in realtà egli può entrare qualsiasi Data di nascita che vuole. Una volta si rese conto che, si fece vecchio abbastanza per vedere il video.

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

Funny domenica: “È Garbage stampa”

Al mio primo lavoro l'Università in 1991, Sono stato fortunato a lavorare per una società di produzione con 13 posizioni, non compreso il suo quartier generale aziendale nel New Jersey. Mi sono iscritto solo quando la società stava rotolando fuori un nuovo sistema ERP. Eravamo un piccolo reparto IT di complessivamente circa dieci persone, due dei quali non viaggiare. Parte del progetto ha coinvolto sostituzione sistema di IBM 36 scatole con hardware HP e HPUX. Tutti utilizzati tubi verdi per accedere al sistema.

Il progetto rotola lungo e sto fatto scendere a Baltimora con un nuovo collega, Jeff. Il nostro lavoro era al potere la casella di Unix, Assicurarsi che l'o/s era in esecuzione, installare il sistema ERP, configurare l'ERP, formare le persone su ERP e fare un lavoro personalizzato per la gente sul posto. (Questo era un lavoro da sogno, soprattutto provenienti direttamente dal Collegio). Prima abbiamo potuto davvero scendere a terra, avevamo bisogno di decomprimere tutti i tubi verdi, metterli su una scrivania e li filo. E la parte migliore era che abbiamo dovuto mettere i connettori RJ11 su noi stessi.

Per qualche ragione che mai capito e mai realmente pensato a chiedere al momento, avevamo avuto qualche azienda appaltante venire avanti e correre via cavo in tutta la pianta, ma non li abbiamo messo sui connettori. Così, c'era una scatola di patch"" con decine di cavi senza etichetta in sala computer"" e queste serpeggiava intorno all'edificio, a vari posti nell'edificio.

Abbiamo lavorato il nostro modo attraverso di essa nel corso di un week-end, test ogni filo, mettendo su un connettore (fare in modo che era dritto vs. attraversato), assicurando l'impostazioni della punta sul verde tubi e stampanti erano corretti, etichettatura di fili, assicurandosi che getty"" è stato eseguito correttamente per ciascuna porta e probabilmente mille altre cose che io ho soppresso da allora. Tutto è venuto insieme abbastanza bene.

Ma, C'era un cavo importante che siamo riusciti a capire. La pianta a Baltimora ha avuto una relazione con una posizione di stoccaggio nel New Jersey. Alcuni ordini a Baltimora spediti di fuori quella posizione. C'erano due fili che abbiamo dovuto collegare alla scatola di HPUX: un tubo verde e una stampante. Il tubo verde è stato facile, ma la stampante si trasformò in un incubo di tre settimane.

Se non lo sapete, o hanno soppresso, a che fare con stampanti e tubi verdi in questo modo, Ci sono varie opzioni che avete a che fare con impostando vari pin. 8-bit, 7-bit, parità (anche/dispari/nessuno), probabilmente altri. Se si ottiene uno di tali impostazioni sbagliate, il tubo o la stampante presenta ancora roba, ma sarà senza senso totale, o sarà senza senso con un sacco di roba riconoscibile in mezzo. Naturalmente, questi pin sono difficili da vedere e deve essere impostata utilizzando un piccolo cacciavite piatto-bordo. E non sono mai standard.

Abbiamo istituito la prima di molte chiamate rapide con il ragazzo di NJ (un hater computer brizzolato che probabilmente ci maledice per questo giorno). Abbiamo trovato il tubo verde lavorando abbastanza rapidamente, ma non abbiamo potuto ottenere la stampante al lavoro. Ha mantenuto il "stampa spazzatura". Potremmo creare un nuovo connettore RJ11, commutazione tra dritto e attraversate. Ci consentirebbe di eliminare la porta e ricreato in Unix. Siamo andati attraverso l'arduo compito di avere lui a spiegare a noi la configurazione dei pin della stampante, mai veramente sicuro di se che stava facendo correttamente.

È giunto il momento di andare a vivere, tutto a Baltimora è canticchiando, ma non possiamo alzarci la maledetta stampante in NJ a lavorare! Abbiamo esaurito tutte le possibilità ad eccezione di guida indietro fino a NJ al lavoro sulla stampante in persona. Per evitare tutto ciò che guida, Infine chiediamo di fax con ciò che egli è sempre quando è "spazzatura", sperando che magari ci sarà qualche indizio in quella spazzatura che ci dirà che cosa stiamo facendo sbagliato.

Quando abbiamo ricevuto il fax, Abbiamo capito subito che cosa era sbagliato. Vedere, il nostro metodo di prova se noi avevamo configurato una stampante correttamente doveva emettere un lp"" comando come questo:

LP/etc/passwd

Fondamentalmente, Abbiamo stampato il file delle password unix. È sempre presente e fuori dalla scatola, sempre una sola pagina. Si standard Unix password file simile a questo:

Smith:*:100:100:8A-74(Ufficio):/Casa/smith:/usr/bin/shguest:*:200:0::/casa/ospite:/usr/bin/sh  

Noi avevamo stampa il file di password più e più volte per diverse settimane ed è stata la stampa correttamente. Tuttavia, all'utente finale, e ' stato "stampa spazzatura".

</fine>

Ancora un'altra rete credenziali Multi-Challenge problema e soluzione

Il mio cliente ha recentemente installato un dispositivo magico da Ginepro che a quanto pare sostituito il loro vecchio servizio di bilanciamento carico di rete Cisco (BILANCIAMENTO CARICO DI RETE). A circa lo stesso tempo, Abbiamo installato un hotfix per risolvere un problema di flusso di lavoro.

Un giorno o due più tardi, Abbiamo notato un problema quando si accede a provider di servizi condivisi (SSP). Siamo riusciti ad esso, ma ci sarebbe essere sfidati per un ID utente e una password molte volte su ogni pagina. Questo non è accaduto con l'app del portale principale, né l'amministrazione centrale. Naturalmente, non sappiamo quale delle due (Ginepro o hotfix) sarebbe il problema, anche se sospettavo fortemente l'hotfix, per capire noi avevamo non installato ha ragione.

Si è scoperto che Juniper aveva una sorta di impostazione di compressione. Uno dei figure vestite nel corso della rete gruppo trasformato tale impostazione. Che risolto il nostro problema.

Questo non è la prima volta che la compressione è stata la causa principale di un problema di SharePoint per me. Compressione di IIS colpite uno strumento 3 ° partito da gente brava a The Dot Net Factory per IE 6 browser (IE 7 browser lavorato senza difficoltà).

Così, Aggiungi "compressione" per l'elenco dei pericoli.

</fine>

Credito a: http://www.elfwood.com/art/s/h/sherry/death_colour.jpg.html

Pensando di cambiare piattaforma di Blogging

Ho iniziato la mia carriera di blogging"" utilizzando la piattaforma Microsoft e è stato buono con me. È facile da pubblicare, ci sono buone opzioni e widget per gestire il tuo "spazio", archiviazione web decente e così via.

Tuttavia, Ho davvero appena caduto nella soluzione MS con quasi nessuna pianificazione. Che chiama da solo per me valutare dove sono e dove sto andando, in termini di una piattaforma di blogging. Ci sono anche due importanti limitazioni che mi dà fastidio giusto ora vis-à-vis Windows Live Spaces.

Primo, Non riesco molto buone statistiche. Ci sono statistiche, ma il dettaglio è spesso troncato e non ha presentato in un modo che permette qualsiasi tipo di analisi. Non vi alcuna possibilità di ordinamento o esportazione. Ho molte idee blog basati sul tipo di informazioni, trovare persone (o soprattutto non riescono a trovare) Quando si cerca il mio blog. È molto difficile utilizzare gli spazi di vita per questo.

Secondo, non sembrano esserci alcun meccanismo di "monetizzare" un blog di windows live spaces. Infatti, al fine di sbarazzarsi di MS annunci (da cui non derivare alcun beneficio), Ho bisogno di pagare effettivamente in Microsoft. (Almeno, Questo è quanto mi risulta; Sono stato incapace di ottenere risposte definitive a questo e domande come si).

Ora che ho un modello consolidato e insieme di abitudini di blogging, Voglio valutare altre opzioni. Ho fatto qualche ricerca e ci sono un sacco di scelte, ma io sono curioso di vedere quello che altre persone, particolarmente gli altri nella comunità SharePoint (come blogger o lettori), come utilizzare.

Se questo argomento vi interessa e avete un'opinione o sono disposto a condividere la tua esperienza, si prega di lasciare un commento o scrivermi direttamente.

Grazie!

<fine />

Technorati Tags:

Invia Email SharePoint Designer ???? via email

Gli utenti del forum di tanto in tanto chiedere: Perché SharePoint Designer mettere ???? nel mio email invece di un valore di campo?

Una ragione per che questo accade è perché la variabile a cui fa riferimento è null.

Ciò può accadere perché si sta cercando di fare riferimento a un campo dall'elemento corrente"" ma l'utente mai immesso un valore nel campo del form.

<fine />

Technorati Tags:

Confrontare / Test per vuote date nel flusso di lavoro SharePoint Designer

Scenario: In un flusso di lavoro SharePoint Designer, è necessario determinare se un campo data è vuoto.

Problema: SPD non fornisce un metodo diretto per il confronto di date per qualcosa di diverso da una data. Non è possibile creare una condizione come questa: "Se [DateField] è uguale a vuoto".

Soluzione: Convertire la data in una stringa. Utilizzare il confronto di stringhe per determinare se la data è vuota.

Screen Shots:

Le schermate seguenti mostrano come eseguire questa operazione. In questo scenario, un campo su un elemento, "Permessi ambientali:Data primo promemoria di soggiorno", è presentato e il flusso di lavoro viene generato in risposta.

immagine

immagine

Note:

Quando ho provato questo, Sono rimasto piacevolmente sorpreso di imparare che funziona. Ero preoccupato che SharePoint Designer potrebbe non consentire l'assegnazione della stringa (Variabile:StringReminderDateDate) ma esso ha fatto permettono.

Ero anche preoccupato che permettendo, il valore potrebbe essere null e o blow up WF in fase di esecuzione o forse alzare la temperatura globale 1/2 un grado, ma questi timori erano infondati.

</fine>

Technorati Tags:

Il bar è ancora abbastanza alto per estendere MOSS

Oggi, Stavo lavorando con un cliente e che descrive come modificare la web part query contenuto e visualizzare ulteriori bit di informazioni da un tipo di contenuto.

"Primo, configurare disponibili per la connessione alle sue fonti di dati, poi si esportarlo in workstation, modificare <CommonViewFields>, caricare, rimuovere l'originale e ora è ' innescato’ per visualizzare le altre colonne. Successivo, Aprire SharePoint designer, spostarsi sulla radice di raccolta sito e individuare ItemStyle.xsl. Copia uno dei modelli come un utile punto di partenza. Tornare indietro e modificare il CQWP per fare uso di questo nuovo modello. Infine, modificare il template per rendere i vostri nuovi campi! (Non dimenticate di controllare che indietro in modo che altri utenti può vedere i risultati)."

È tutto abbastanza chiaro per me (e la maggior parte di noi tipi sviluppatore SharePoint) cosa sta succedendo e come è molto carino, davvero, che gli aspetti di recupero di dati della CQWP sono così bene-separi dagli aspetti di presentazione dei dati. Ma, non è così facile da spiegare, e '?

<fine />

Visualizzare il contenuto Web Part risultati della Query in una griglia / Tabella

Panoramica e obiettivo

Out of the box, MUSCHIO’ Web Part Query contenuto (DISPONIBILI) i risultati verranno visualizzati in formato elenco, simile ai risultati di ricerca. È anche possibile visualizzare i risultati in formato griglia (vale a dire. Formato di tabella HTML). Formati di griglia sono meglio in alcune circostanze. Viene descritto come ottenere questo effetto in questo articolo.

Scenario business

Ho lavorato con un cliente su un lancio MOSS aziendale. Abbiamo progettato loro tassonomia tale che progetti sono cittadini di prima classe nella gerarchia e hanno il proprio sito di livello superiore. Project Manager mantiene un elenco di singleton di informazioni di riepilogo del progetto, come il titolo, bilancio, Data di completamento prevista, budget residuo e altri campi di tipo di riepilogo. Da "singleton" Cioe ' un elenco SharePoint personalizzato garantito per contenere un solo elemento. Semplicisticamente, sembra che questo:

immagine

L'approccio tecnico è lo stesso come descritto qui (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). Il CQWP utilizza una trasformazione XSL per generare HTML per il browser per eseguire il rendering.

Mi immagino sempre il risultato prima di tuffarsi in XSL perché XSL è un incubo. Ecco il mio risultato desiderato:

immagine

HTML come questo genera quel risultato:

<html>
 <corpo>
 <centro>
 <tabella confine= 1>

<!-- Etichette->
 <TR bgcolor= blu>
 <TD><tipo di carattere Colore= bianco><b>Nome del progetto</b></tipo di carattere></TD>
 <TD allineare= destra><tipo di carattere Colore= bianco><b>Data completa</b></tipo di carattere></TD>
 <TD allineare= destra><tipo di carattere Colore= bianco><b>Bilancio</b></tipo di carattere></TD>
 <TD allineare= destra><tipo di carattere Colore= bianco><b>Spesa effettiva</b></tipo di carattere></TD>
 <TD><tipo di carattere Colore= bianco><b>Stato complessivo</b></tipo di carattere></TD>
 </TR>

<TR>
 <TD>Governando la sala computer.</TD>
 <TD allineare= destra>02/01/08</TD>
 <TD allineare= destra>22,500.00</TD>
 <TD allineare= destra>19,000.00</TD>
 <TD>In corso</TD>
 </TR>

<TR>
 <TD>Server a disposizione per aggiornare SQL</TD>
 <TD allineare= destra>04/01/08</TD>
 <TD allineare= destra>7,500.00</TD>
 <TD allineare= destra>0.00</TD>
 <TD>Pianificato</TD>
 </TR>

</tabella>
 </centro>
 </corpo>
</html>

Approccio

Attenersi alla seguente procedura per creare la griglia:

  1. Identificare i componenti della griglia (righe e colonne).
  2. Definire e creare le colonne del sito necessario.
  3. Creare siti sub per i progetti e le liste di singleton.
  4. Aggiungere il CQWP in una pagina web e configurarlo per cercare gli elenchi.
  5. Modificare XML del CQWP per raccogliere le colonne aggiuntive.
  6. Modificare il XSL per generare una tabella.

Ho intenzione di concentrarsi sul numero sei. Numeri da uno al quattro sono straight-forward e qualcosa che qualsiasi utente CQWP ha già fatto. Numero cinque è stato ben documentato da altri tra cui esaustivo articolo pieno carico schermata da MSDN qui (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) blog di Heather Solomon e qui (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Dadi e bulloni

Avviare e implementare i passaggi da uno a cinque, secondo la documentazione MSDN e articolo di Heather Solomon.

A questo punto, hai aggiunto il tuo CQWP alla pagina e hai il tuo <CommonViewFields> configurato come necessario.

Seguendo la procedura usuale, Ottenere questi risultati intermedi:

1. Creare un tipo di contenuto, un elenco personalizzato templatized per quel tipo di contenuto e due siti. Ecco il tipo di contenuto:

immagine

Ecco la struttura del sito:

immagine

2. Aggiungere il CQWP dopo la creazione di liste di riepilogo del progetto mio progetto secondari e singleton:

immagine

3. Aggiungere tutte le informazioni aggiuntive che voglio tramite il <CommonViewFields>:

        <Proprietà nome="CommonViewFields" tipo="stringa">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</Proprietà>

Si noti che ho dovuto tenere tutti i campi di proprietà su una linea o non avrebbero funzionato (CQWP vuoi dirmi che la query non restituita elementi).

4. A questo punto, Siamo pronti a muoversi oltre l'articolo di MSDN e flip su sopra all'articolo di Heather Solomon. Seguire i suoi passi di partenza nei pressi del passo #5 per creare un personalizzato / unghosted versione di ItemStyle.xsl. Seguo i consigli di Heather, alto attraverso il passo 11 e ottenere questi risultati intermedi:

4.1: Nome mio modello XSL come segue:

<xsl:nome template = "Grid" match = "riga[@Style = 'Grid']" modalità = "itemstyle">

Anche leggermente modificare lei suggerito <xsl:for each …> con l'aggiunta di un <br /> Tag per fornire un elenco più pulito:

    <xsl:for each selezionare="@*">
      P:<xsl:valore di selezionare="nome()" /><br/>
    </xsl:for each>

4.2: Modificare la web part, Vai a comparsa e selezionare my Grid"" stile:

immagine

Applicare la modifica ed ecco il risultato:

immagine

Da quanto sopra possiamo vedere che i campi che vogliamo (Nome del progetto, spese, status, ecc) sono disponibili per noi da utilizzare quando emettiamo il codice HTML. Non solo che, ma vediamo i nomi con cui ci dobbiamo fanno riferimento tali colonne in XSL. Per esempio, riferimento lo stato del progetto come "Project_x005F_x0020_Name".

A questo punto, Partiamo dal blog di Heather e dalle spalle di questi giganti, Aggiungo il mio po '.

ContentQueryMain.xsl

NOTA: Quando si apportano modifiche a ContentQueryMain.xsl così come ItemStyle.xsl, è necessario controllare che i file di nuovo in prima di vedere l'effetto delle modifiche.

Fini della griglia-making, MOSS utilizza due file XSL diversi per produrre i risultati che vediamo da un CQWP. Per generare il precedente bit di output, Abbiamo modificato ItemStyle.xsl. MOSS utilizza in realtà un altro file XSL, ContentQueryMain.xsl a in combinazione con ItemStyle.xsl per generare il codice HTML. Come suggerisce il nome, ContentQueryMain.xsl è il principale"" XSL che controlla il flusso complessivo di traduzione. Scorre tutti gli elementi trovati e li passa uno per modelli in ItemStyle.xsl. Verrà modificata ItemStyle.xsl per generare all'aperto <tabella> Tag prima di emettere la prima riga di dati e la chiusura <tabella> Tag dopo l'ultima riga di emissione. Per eseguire questa operazione, ContentQueryMain.xsl è modificato per passare due parametri alla nostra griglia"" modello in ItemStyle.xsl, "ultima fila" e "riga corrente". ItemStyle.xsl utilizza questi per generare in modo condizionale i tag necessari.

Utilizzando la tecnica di Heather Solomon, Siamo individuare ContentQueryMain.xsl. Si trova nello stesso luogo come ItemStyle.xsl. Questa schermata dovrebbe aiutare:

immagine

Abbiamo bisogno di apportare le seguenti modifiche:

  • Modificare un modello xsl, "CallItemTemplate" che in realtà richiama il nostro modello di griglia in ItemStyle.xsl. Passeremo due parametri al modello Grid in modo che avrà i dati che necessari per generare in modo condizionale di apertura e chiusura <tabella> Tag.
  • Modificare un altro po ' di ContentQueryMain.xsl che chiama la "CallItemTemplate" far passare un "LastRow" parametro quindi che LastRow potranno essere comunicati al nostro modello di griglia.

Individuare il modello denominato "OuterTemplate.CallItemTemplate" identificato dalla stringa:

  <xsl:modello nome="OuterTemplate.CallItemTemplate">

Sostituire l'intero modello come segue:

  <xsl:modello nome="OuterTemplate.CallItemTemplate">
    <xsl:param nome="CurPosition" />

    <!--
      Aggiungere il "LastRow" parametro.
      Usiamo solo quando l'elemento style pass in è «Griglia».
    -->
    <xsl:param nome="LastRow" />

    <xsl:scegliere>
      <xsl:Quando test="@Style = 'NewsRollUpItem'">
        <xsl:apply-templates selezionare="." modalità="ItemStyle">
          <xsl:con param nome="EditMode" selezionare="$cbq_iseditmode" />
        </xsl:apply-templates>
      </xsl:Quando>
      <xsl:Quando test="@Style = 'NewsBigItem'">
        <xsl:apply-templates selezionare="." modalità="ItemStyle">
          <xsl:con param nome="CurPos" selezionare="$CurPosition" />
        </xsl:apply-templates>
      </xsl:Quando>
      <xsl:Quando test="@Style = 'NewsCategoryItem'">
        <xsl:apply-templates selezionare="." modalità="ItemStyle">
          <xsl:con param nome="CurPos" selezionare="$CurPosition" />
        </xsl:apply-templates>
      </xsl:Quando>

      <!--
              Posizione corrente e lastrow passare il modello di griglia itemstyle.xsl.
              ItemStyle.xsl che utilizzerà per emettere l'apertura e la chiusura <tabella> Tag.
      -->
      <xsl:Quando test="@Style = 'Griglia'">
        <xsl:apply-templates selezionare="." modalità="ItemStyle">
          <xsl:con param nome="CurPos" selezionare="$CurPosition" />
          <xsl:con param nome="Ultima" selezionare="$LastRow" />
        </xsl:apply-templates>
      </xsl:Quando>

      <xsl:in caso contrario>
        <xsl:apply-templates selezionare="." modalità="ItemStyle">
        </xsl:apply-templates>
      </xsl:in caso contrario>
    </xsl:scegliere>
  </xsl:modello>

Commenti descrivono lo scopo delle modifiche.

Naturalmente, il OuterTemplate.CallItemTemplate"" Se viene chiamato da un altro modello. Individuare tale modello di ricerca per questa stringa di testo:

<xsl:modello nome="OuterTemplate.Body">

Scorrere le istruzioni in OuterTemplate.Body e inserire il parametro LastRow come segue (mostrato come un commento in corsivo):

<xsl:modello di chiamata nome="OuterTemplate.CallItemTemplate">
  <xsl:con param nome="CurPosition" selezionare="$CurPosition" />
  <!-- Inserire il parametro LastRow. -->
  <xsl:con param nome="LastRow" selezionare="$LastRow"/>
</xsl:modello di chiamata>

Dopo tutto questo, finalmente abbiamo impostate correttamente in modo che la nostra ItemStyle.xsl può emettere cose <tabella> Tag al posto giusto.

ItemStyle.Xsl

NOTA: Ancora una volta, Dopo aver apportato eventuali modifiche, in modo che si vede l'effetto di tali modifiche il check-in ItemStyle.xsl.

Abbiamo due compiti qui:

  • Sostituire l'intero modello di griglia. È possibile copiare/incollare da sotto.
  • Aggiungere alcuni mumbo jumbo non rientra nella definizione di modello che consente di "formatcurrency" modello a lavorare. (Si può dire che ho una tenue maniglia su XSL).

Primo, nella parte superiore della ItemStyle.xsl, aggiungere questa riga:

  <!-- Alcuni mumbo jumbo che ci permette di visualizzare gli Stati Uniti. valuta. -->
  <xsl:formato decimale nome="personale" cifre="D" />

  <xsl:modello nome="Predefinito" match="*" modalità="ItemStyle">

Si noti che aggiunto direttamente prima del <xsl:nome template = "Default" …> definizione.

Successivo, Torna al nostro modello di griglia. Sostituire l'intero modello di griglia con il codice riportato di seguito. È accuratamente commentato, ma non esitate a scrivermi o lasciare commenti sul mio blog, se avete domande.

  <xsl:modello nome="Griglia" match="Riga[@Style = 'Griglia']" modalità="ItemStyle">

    <!--
      ContentMain.xsl passa CurPos e ultimo.
      Usiamo questi condizionalmente emettere all'aperto e chiusura <tabella> Tag.
    -->
    <xsl:param nome="CurPos" />
    <xsl:param nome="Ultima" />

    <!-- Le seguenti variabili sono state modificate dalla ItemStyle.xsl standard -->
    <xsl:variabile nome="SafeImageUrl">
      <xsl:modello di chiamata nome="OuterTemplate.GetSafeStaticUrl">
        <xsl:con param nome="UrlColumnName" selezionare="'ImageUrl'"/>
      </xsl:modello di chiamata>
    </xsl:variabile>
    <xsl:variabile nome="SafeLinkUrl">
      <xsl:modello di chiamata nome="OuterTemplate.GetSafeLink">
        <xsl:con param nome="UrlColumnName" selezionare="'LinkUrl'"/>
      </xsl:modello di chiamata>
    </xsl:variabile>
    <xsl:variabile nome="DisplayTitle">
      <xsl:modello di chiamata nome="OuterTemplate.GetTitle">
        <xsl:con param nome="Titolo" selezionare="@Title"/>
        <xsl:con param nome="UrlColumnName" selezionare="'LinkUrl'"/>
      </xsl:modello di chiamata>
    </xsl:variabile>
    <xsl:variabile nome="LinkTarget">
      <xsl:Se test="@OpenInNewWindow = 'True'" >Blank</xsl:Se>
    </xsl:variabile>

    <!--
      Qui definiamo una variabile, "tableStart".  Questo file contiene il codice HTML che usiamo per definire l'apertura della tabella così come le etichette di colonna.  Si noti che se CurPos = 1, Esso comprende il codice HTML in un tag CDATA.
      In caso contrario, sarà vuota.

      Il valore di tableStart viene emesso ogni volta ItemStyle è chiamata via ContentQueryMain.xsl.
    -->
    <xsl:variabile nome="tableStart">
      <xsl:Se test="$CurPos = 1">
        <![CDATA[
        <bordo della tabella = 1>
          <TR bgcolor = "blue">
            <TD><colore del carattere = "white"><b>Nome del progetto</b></tipo di carattere></TD>
            <TD align = "right"><colore del carattere = "white"><b>Data completa</b></tipo di carattere></TD>
            <TD align = "right"><colore del carattere = "white"><b>Bilancio</b></tipo di carattere></TD>
            <TD align = "right"><colore del carattere = "white"><b>Spesa effettiva</b></tipo di carattere></TD>
            <TD><colore del carattere = "white"><b>Stato complessivo</b></tipo di carattere></TD>
          </TR>
        ]]>
      </xsl:Se>
    </xsl:variabile>

    <!--
      Un'altra variabile, tableEnd definisce semplicemente la chiusura tag di tabella.

      Come con tableStart, è sempre emesso.  Ecco perché il relativo valore è assegnato in modo condizionale basata su se siamo stati passati l'ultima riga di ContentQueryMain.xsl.
    -->
    <xsl:variabile nome="tableEnd">
      <xsl:Se test="$CurPos = $Last">
        <![CDATA[ </tabella> ]]>
      </xsl:Se>
    </xsl:variabile>

    <!--
      Emettono sempre il contenuto di tableStart.  Se questo non è la prima riga che passava a noi ContentQueryMain.xsl, quindi sappiamo che il suo valore sarà vuoto.

      Disabilitare l'uscita escape perché quando tableStart non vuoto, Esso comprende HTML effettivo che vogliamo sottoporre a rendering mediante il browser.  Se non diciamo il parser XSL per disabilitare output fuga, verrà generato roba come"&lt;tabella&gt;" invece di"<tabella>".
    -->
    <xsl:valore di selezionare="$tableStart" disable-output-escaping=""/>


    <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:valore di selezionare="@Project_x005F_x0020_Name"/>
      </TD>

      <TD allineare="destra">
        <xsl:valore di selezionare="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD allineare="destra">
        <xsl:modello di chiamata nome="FormatCurrency">
          <xsl:con param nome="valore" 
selezionare="@Project_x005F_x0020_Budget"></xsl:con param> </xsl:modello di chiamata> </TD> <TD allineare="destra"> <xsl:modello di chiamata nome="FormatCurrency"> <xsl:con param nome="valore" selezionare="@Project_x005F_x0020_Expenses">
</xsl:con param> </xsl:modello di chiamata> </TD> <TD> <xsl:valore di selezionare="@Project_x005F_x0020_Status"/> </TD> <!-- Tutte le condizioni seguenti è commentata per chiarire le cose. Tuttavia, riportarlo indietro e roba in un <TD> per vedere il suo effetto. --> <!-- <div id = "linkitem" classe = "item"> <xsl:Se prova = "string-length($SafeImageUrl) != 0"> <div class = "immagine-zona-sinistra"> <un href = "{$SafeLinkUrl}" destinazione = "{$LinkTarget}"> <img class = "immagine-larghezza fissa" src = "{$SafeImageUrl}"
ALT = "{@ImageUrlAltText}"/> </un> </div> </xsl:Se> <div class = "link-item"> <xsl:modello di chiamata
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <un href = "{$SafeLinkUrl}"
destinazione = "{$LinkTarget}" title = "{@LinkToolTip}"> <xsl:value-of select = "$DisxslyTitle" /> </un> <div class = "descrizione"> <xsl:valore di select="@Description" /> </div> </div> </div>
--> </TR> <!-- Emettono la chiusura tag di tabella. Se non siamo in ultima fila, Questo sarà vuoto. --> <xsl:valore di selezionare="$tableEnd" disable-output-escaping=""/> </xsl:modello> <xsl:modello nome="FormatCurrency"> <xsl:param nome="valore" selezionare="0" /> <xsl:valore di selezionare='formato numero($valore, "$DDD,DDD,DDD.DD", "personale")' /> </xsl:modello>

Standard schermi di immissione dati WSS/MOSS non supportano CSS Drop-Down (o altri intra-dalla comunicazione)

AGGIORNAMENTO (04/2008): Questa voce di blog grande mostra un approccio di buon javascript basata a questo problema: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

AGGIORNAMENTO II: (04/2008): Questa voce di blog sembra promettente pure: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Più volte a settimana, Se non quotidiane, Gli utenti del forum descrivono un requisito che normalmente sarebbe soddisfatte tramite CSS drop-down. Per esempio, Ho due controlli a discesa:

  • Elenco degli Stati Uniti. Stati
  • Elenco degli Stati Uniti. città.

Come provider di interfaccia utente responsabile, vogliamo operare come questo:

  • Paul seleziona degli Stati Uniti. stato dal menu a discesa.
  • In questo modo le città discesa per filtrare solo quelle città che appartengono allo stato selezionato.
  • Paul seleziona una città dall'elenco filtrato.

Non c'è nessun supporto out-of-the-box per questa funzione. Infatti, non c'è nessun supporto OOB per qualsiasi tipo di comunicazione intra-forma diretta. Questo include a livello di codice campi nascondersi/abilitazione/disabilitazione in risposta ai cambiamenti di campo altrove nel modulo.

Il vero obiettivo di questo articolo per descrivere le possibili soluzioni e queste sono le opzioni come li conosco:

  1. Sviluppare un tipo di colonna personalizzato. Come un custom-colonna-developer, avete controllo completo sopra il mondo"" di tale colonna personalizzata. È possibile implementare un CSS menu a discesa in questo modo.
  2. Considerare l'utilizzo del flusso di lavoro. In alcuni casi, si desidera assegnare automaticamente un valore di campo basata sul valore di un altro campo. In questo caso, si sarebbe normalmente tenta di utilizzare una colonna calcolata, ma alcune volte, solo non otterrà il lavoro fatto. Flusso di lavoro SharePoint Designer è un'alternativa relativamente amministrare-friendly a cadere verso il basso nel codice e visual studio. Se vuoi seguire questa strada, essere consapevoli del problema affrontato da in questo articolo (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Gestori eventi: Come flusso di lavoro, si tratta di una soluzione di dopo--fatto. Il gestore eventi è un assembly .NET (C#, VB.NET) a quali SharePoint passa il controllo. L'oggetto che si sviluppa ha accesso ai dati dell'elenco (e l'intero modello) e può fare qualsiasi calcolo necessario.
  4. Utilizzare SharePoint Designer per creare i moduli di iscrizione personalizzata. Non ho esperienza diretta con questo approccio, ma ho sentito che stanno facendo cose buone con NewForm.aspx in questi giorni 🙂
  5. Rotolare la propria funzione di ingresso dati ASP.NET (come pagina web stand-alone o come parte web) invece che utilizzare.

Se qualcuno conosce altre opzioni e/o migliore, si prega di postare un commento e aggiornerò il corpo di questo post.

<fine />

Technorati Tags:

Sì/No (casella di controllo) filtro in Web Part Query contenuto

Per filtrare per una query per lo Sì/No casella intitolato "Pietra miliare PG", configurare disponibili come questo:

immagine

Questo è un altro di tali questioni, ma evidente-una volta-si-sa-it hard-to-find-an-answer-to: Come filtrare su un Sì/No casella di controllo utilizzare la web part query contenuto.

Il primo risultato della ricerca Trovo usando il termine "filtro contenuto sì/no web part query di ricerca" è sbagliato flat out, così ho pensato che vorrei mettere questa lassù e vedere se è possibile sostituire il risultato errato nei risultati di ricerca tipica.

È abbastanza facile: Vero valori = "1" e i falsi valori non è uguale a 1"" (piuttosto retrò, in realtà).

Nell'esempio precedente, Ho creato la colonna del sito del tipo "Sì/No (casella di controllo)" denominata "PG Milestone". Ho aggiunto a una libreria di doc, caricato alcuni documenti, impostare il valore per una coppia e testato.

<fine />