Nidificazione all'infinito <div> Tag e jQuery

Questo mi sembra un soggetto così stravaganti, Non sono sicuro che vale davvero la pena bloggare su, ma che non ha mai smesso prima di me, quindi qui si va sorriso, sorridere

Sto lavorando su un progetto dove sto tirando alcuni dati da una ricerca, imballaggio in un messaggio XML e poi il codice XML viene trasformato in definitiva in HTML tramite XSLT.  C'è un sacco di jQuery coinvolte, un bit di che implementa alcune funzionalità di tabulazione.  Quando fa clic su una scheda (davvero, un <div>), jQuery richiama .hide() e .show() su vari DIV (il caricamento della pagina iniziale Download tutto il contenuto, quindi non ci sono in questo caso postback).

Un mucchio di ore fa, la scheda logica di commutazione ha iniziato a comportarsi in modo strano e non mostra una delle mie schede.  Io alla fine esso monitorati al fatto che internet explorer (almeno) pensava che la <div> tag nidificati lontano, molto più profondo da desiderata.Avrebbe mostrato la developer toolbar:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— Infine mostrandolo è stata chiusa fino in fondo!

Così, Se ho fatto un $("# Tab1Content").Nascondi(), Sarebbe anche nascondere Tab2 e mai potuto mostrare Tab2 anche se non ha mostro Tab1.  Ho copiato e incollato il codice in visual studio e ha mostrato a tutti di rivestimento del div fino piacevolmente, proprio come avrebbero dovuto fare, guardando come questo:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

Ho battuto la testa contro il muro per un po' e ho notato che nel codice HTML effettivo codice era generando un sacco di vuoto <div> Tag, come:

<corpo>

  <div id = "Tab1Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

  <div id = "Tab2Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

</corpo>

(Quanto sopra è waaaaaaaaaaaay semplificato.  I tag div vuota sono totalmente validi. Alcuni dei miei <div> Tag erano piene di contenuti, ma molti altri non hanno.  Sono venuto alla realizzazione che mio <xsl:for each> le direttive sono state che emettono la forma abbreviata div tag quando xsl:for each non ' trovare tutti i dati.  Sono costretto a un commento HTML nell'output, come illustrato:

image

 

Dopo che ho fatto che, il div in fila piacevolmente ed il mio switching tab iniziò a lavorare.

Come sempre, Spero che questo aiuta a qualcuno in un pizzico.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Quick Fix: "Il nome del tipo di contenuto '$ Resources:ReportServerResources … non può contenere … caratteri speciali”

Ho trascorso qualche tempo ripulire una SharePoint 2010 sito e una delle questioni pulitura riguarda un corrotto / installato in modo non corretto problema di SQL Server Reporting Services.  Il problema è sorto quando uno dei miei colleghi ha provato a salvare un sito come un modello e creare quindi creare un nuovo sito basato su tale modello.  Il salvataggio operazione ha funzionato bene, ma quando lei ha cercato di creare il nuovo sito, SharePoint visualizzato il seguente messaggio di errore:

Errore

Il nome del tipo di contenuto '$ Resources:ReportServerResources,DataSourceContentTypeName;' non può contenere: \ / : * ? “ # % < > { } | ~ & , due periodi consecutivi (..), o caratteri speciali come ad esempio una scheda.

Ecco un screen cap:

 

image

Ho dato un'occhiata ai tipi di contenuto nel sito e trovato questo:

image

Questi tipi di contenuto sono chiaramente malsani.

Questo problema sembra venire molto su Internets e non sembra essere un singolo consenso su come risolverlo.  Ho trovato una tabella utile mappato i nomi di cattivo tipo di contenuto per i nomi dei tipi di contenuto buono qui: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Aggiornato manualmente li thusly:

image

(BrightStarr il nome è ovviamente facoltativo, ma non sarebbe male sorriso, sorridere )

Questo mi ha permesso di creare un nuovo modello e non rompe nulla su altri siti, tra cui alcune cose di PerformancePoint Server che un gruppo completamente diverso di persone stavano lavorando su.  Poi è stato in grado di creare un nuovo sito sul modello.  Successo!

Non sono sicuro che questo è un 100% soluzione, ma mi ha fatto e tutti i soggetti coinvolti oltre questo fastidioso errore.  Se trovo qualcosa di nuovo, I'll post un aggiornamento.  Il mio nervosismo deriva dal fatto che questi nomi non dovrebbero essere sbagliati in primo luogo e fissando il nome visualizzato, Io non sto toccando il nome interno. 

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Una delle Cause per "il creatore di questo difetto non ha specificato un motivo.”

Ho fatto un sacco di lavoro con SharePoint ricerca ultimamente e in particolare la classe KeywordQuery, Proprietà e metodi.

Se si desidera che il set di risultati a restituire risultati oltre i soliti sospetti (vedi qui), aggiungerlo all'insieme SelectedProperties, come in:

myKeywordQuery.SelectProperties.Add("xyzzy");

Molte grazie e una punta di cappello a Corey Roth e Questo post del blog molto utile (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

Nel mio caso, "xyzzy" non è in realtà una proprietà gestita.  Quando ho aggiunto al SelectedProperties comunque, SharePoint gettò uno dei miei preferiti mai eccezioni runtime:

"Il creatore di questo difetto non ha specificato una ragione."

Piace soprattutto la capitale "R" nel motivo.  Questo suona per me come il.Equivalente netto di"I have no bocca, e devo urlare.”

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Utile riferimento: Risultati predefiniti da KeywordQuery di ricerca

Quando si richiama il Execute() Metodo su un KeywordQuery, è possibile creare un ResultTable basato su ResultType.RelevantResults.  Questo frammento di codice viene illustrato cosa intendo:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

La tabella risultante avrà le seguenti colonne di informazioni: 

ID lavoro
Rango
Titolo
Autore
Dimensioni
Percorso
Descrizione
Scrivere
Nomesito
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Questo elenco è derivano una SharePoint 2010 ambiente, Enterprise edition.  Spero che sarà utile a qualcuno in futuro.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Uno dei motivi per: "Non è riuscito a estrarre il file cab nella soluzione”

Mentre si lavora su una parte del web di visual studio progetto oggi, Ho fatto un re-org minori di alcuni file da mettere nella cartella layouts come parte del processo di distribuzione. In particolare, Ho rinominato un file js da "TypeAhead.js" in "TypeAhead(vecchio).js"  Ho intenzione di rimuoverlo come suo successore "TypeAhead.js" si rivela corretto.  Si presentava così:

image

Questo ha causato immediatamente un problema con visual studio quando ho provato a distribuire il progetto:

Si è verificato un errore in fase di distribuzione 'Aggiungi soluzione': Non è riuscito a estrarre il file cab nella soluzione.

Si scopre che non si dovrebbe mettere una parentesi nei nomi di file.  Ho rimosso la parentesi e che ha risolto il problema.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Ancora più jQuery–Ridimensionare un esempio di immagine

Ho ereditato una web part da vecchio fornitore di un client ed ha un problema di dimensioni immagine.  Le immagini dovrebbero essere 60×50 ma per qualche strano motivo, il fornitore originale li ha costretti in 42×42, modo da apparire schiacciati:

 

Buona immagine

Cattiva immagine

Ecco il codice (un po' semplificato):

<table class = 'esteso-outlook'>
  <thead>
    <TR>
      <TH  Width = 100′>3 Martedì</TH>
    </TR>
  </thead>

  <tbody>
    <Classe TR = 'previsioni'>
      <larghezza TD = 100′>
        <UL>
          <Classe li = 'high'>Alta: 72&deg;F</li>
          <Classe li = 'bassa'>Basso: 44&deg;F</li>
          <Classe li = 'condizione'>Sunny
            <img src =’
http://deskwx.WeatherBug.com/images/forecast/icons/Localized/60×50/en/trans/cond007.png’ larghezza = 42’ altezza = 42’ Alt =” />
          </li>
        </UL>
      </TD>
    </TR>

  </tbody>

</tabella>

Avrete notato che anche se il percorso dell'immagine di sé Mostra la dimensione corretta (60×50) il fornitore originale costretto in 42×42.  Perché?  Crazy.

In ogni caso, Volevo una soluzione rapida e semplice a questo problema e mi rivolsi a jQuery.  Il trucco è stato quello di individuare tutte le appropriate <img> Tag.  Non volevo fare muck con qualsiasi altro tag img (di cui ci sono molti).  Questo po ' di jQuery ha fatto il trucco:

<script type = "text/javascript" src ="http://Ajax.googleapis.com/Ajax/libs/jQuery/1.5/jQuery.min.js"></script di>

<tipo di script = "text/javascript">
     $(documento).pronto(funzione () {

         $(' li.condition > img').ogni(funzione (indice, elemento)
           
{
             $(elemento).CSS("larghezza", "60"); 
             $(elemento).CSS("altezza", "50");
            });
     }); // al caricamento del documento
</script di>

Quel po ' di codice trova la collezione <li> Tag cui classe è "condizione" e <img> bambini.  Esso quindi scorre tutto ciò.  Ha lavorato come un fascino.

Probabilmente potrei a razionalizzare e, ma non sono mai stato un tipo di ragazzo di unix che risolto π A 18 precisione di cifre usando sed e awk e io non sono quel tipo se jQuery ragazzo sia sorriso, sorridere.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

L'analisi XML con LINQ

Ecco un rapido esempio utilizzando LINQ per analizzare alcuni  XML e ottenere presso il dolce, dolce in esso attribuisce.

Ecco il codice XML che voglio analizzare:

<?XML version = "1.0" Encoding = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout nome = "xyzzy">
      <Schede>
        <Scheda TabOrder = "1" TabLabel = "x" SharePointContentType = "un" AdditionalConstraints = "ac1" />
        <Scheda TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Schede>
    </PageLayout>

    <PageLayout name = "xyzzy2">
      <Schede>
        <Scheda TabOrder = "100" TabLabel = "x" SharePointContentType = "un" AdditionalConstraints = "ac1" />
        <Scheda TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Scheda TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Schede>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Voglio costruire alcune schede in fase di esecuzione mediante l'analisi di cui sopra.  Mie schede dipendono da un layout di pagina.  Se nome del mio layout di pagina è "xyzzy2" quindi voglio ottenere schede 100, 101 e 103 (le schede in <PageLayout name = "xyzzy2">).

Ecco il LINQ che lo fa:

var allTabs =
              from p in
                  XElement(theXmlToParse).
                 
Elementi("PageLayouts").
                  Elementi("PageLayout")
              dove (p.Attribute("nome").Value.Equals("xyzzy2"))
              da m. in p.Elements("Schede").Elementi("Scheda")
              Selezionare m;

          Results.Text = string.Vuoto;

          foreach (var aTab in allTabs)
          {
              = Results.Text
                  "Ordine di tabulazione: " + aTab.Attribute("TabOrder").Valore + " |" +
                  "Scheda Label: " + aTab.Attribute("TabLabel").Valore + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Valore + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Valore + "r";
          }

In precedenza, la variabile "theXmlToParse" è una variabile di stringa, ma è possibile utilizzare il carico() Metodo su un flusso se ti piace.

«Risultati» sono un'etichetta su un web form e quando questo codice viene eseguito, sembra che questo:

SNAGHTML11cd2e7c

Non ho funzionato come ordinare i risultati ancora, così potrai lasciare che per un post futuro.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery e gli utenti anonimi

Attivato l'accesso anonimo nel mio sito per testare le web part di ricerca che ho sviluppato e con nessuna sorpresa grande, non tutto ha funzionato.  Accesso anonimo è praticamente sempre una sfida per me.

In questo caso, la ricerca iniziale non era in esecuzione per qualche motivo.  Devo dire che è stato non funzionante, ma si stava tornando alcun risultato.  Sto usando il KeywordQuery per quell'esposizione iniziale.

Ho fatto una rapida ricerca e questo post sul blog di"sowmyancs"avvicinò abbastanza velocemente: “SharePoint 2010 Ricerca: non mostra alcun risultato per gli utenti anonimi?”  Che la voce del blog descrive il problema da un fuori della prospettiva casella parola chiave ricerca ma il comportamento era simile alla mia – ha funzionato per gli utenti autenticati e per gli utenti anonimi, ma gli utenti anonimi non ottenuto nessun risultato. 

Ho seguito le istruzioni e il botto!  E ' risolto il mio problema.  Non sono sicuro di quello che gli effetti collaterali che ciò avrà e che può risultare per essere un problema, ma il risultato di breve termine è utile.

Fare clic su attraverso il blog:

image

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery e la proprietà HiddenConstraints

Ho fatto un po' di lavoro con il KeywordQuery oggetto in SharePoint 2010 e facendo uso della HiddenConstraints Proprietà.

Non ho trovato alcun immediatamente utili informazioni sul che proprietà, così ho pensato che sarebbe rapidamente buttar giù come sto usando esso.

Per quanto posso dire, Questo è un vincolo automatico aggiunto alla query in modo che è possibile ordinare del parco lì e non ti preoccupare.  In quanto tale, esso è solo un'altra parola chiave (o un insieme di parole chiave) e modificatori che è possibile digitare all'interfaccia utente quando fate una ricerca per parola chiave.  Ecco un esempio:

keywordQuery.HiddenConstraints = "scope:\"Industry" ";

È possibile aggiungere ulteriori vincoli con un delimitatore spazio.

keywordQuery.HiddenConstraints = "scope:\"Industry" difesa";

Quanto sopra è detto in inglese, "esegue una query di parola chiave alla ricerca di"difesa"e inoltre, utilizzare l'ambito "Industria".

Ecco un altro modo di guardare a esso:

image

Sto usando esso per fornire un ambito automatico dipendente dal contesto su una parte del web personalizzato.  Quando l'utente fa clic su una scheda e fa clic su un pulsante Cerca, la scheda impone un ambito di ricerca in particolare.  Si sta lavorando bene finora.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Esempio: XSLT creando HTML Href

Sto facendo un po' di roba XSL ultimamente e pensato che avrebbe messo insieme un campione per il mio riferimento futuro e che può essere di valore per tutti noi facendo una vita in internets XSLT-ers.

Si consideri il seguente codice XML:

<Count FdcSearchTabsCollection = "2">
  <Contestuale Label = "Industry" SortOrder = "00" Label = "Industrie" SearchConstraints = "contenttype:Industria" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <Contestuale Label = "pratiche" SortOrder = "01" Label = "Pratiche" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Il seguente frammento XSL genererà un elenco ordinato di schede href:

<xsl:partita modello = "FdcSearchTabsCollection" XML:Space = "preserve">
   
    <!– Il tutto"" scheda –>
    <href = "javascript:ViewTab('Tutti')">Visualizza tutte</un>
   
    <!– Ogni scheda individuale –>
    <!– Scorrere tutte le schede e visualizzare la corretta  link. –>
    <xsl:for each = seleziona "Contestuale">
      <xsl:sorta select="@SortOrder"/>

      …
      <href = "javascript:ViewTab(‘{@ TabID}’)"><xsl:valore di select="@Label"/></un>
    </xsl:for each>

    <br /> 
   

   </xsl:modello>

Ecco quello che sembra in SharePoint:

SNAGHTML78aa2cb

 

 

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin