Oändligt kapsla <div> Märken och jQuery

Detta verkar vara sådan en oddball-avsnittet, Jag är inte säker på att det verkligen är värt att blogga om, men det har aldrig hindrat mig innan, Så här går vi Leende

Jag arbetar med ett projekt där jag dra vissa data från en sökning, förpackning till ett XML-meddelande och sedan att XML till slut förvandlas till HTML via XSLT.  Det finns mycket av jQuery, en bit som implementerar tabbing funktionalitet.  När du klickar på en flik (Verkligen, en <div>), jQuery anropar .hide() och .show() på olika Divar (första sidan laddar hämtningar allt innehåll så det finns ingen postbacks i detta fall).

Ett gäng timmar sedan, fliken växling logik började bete sig underligt och det skulle inte visar en av Mina flikar.  Jag slutligen spårade det till faktum att internet explorer (minst) trodde att det <div> Märken som kapslade långt, mycket djupare än avsett.Verktygsfältet utvecklare skulle visa:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— Slutligen visar det lades hela vägen ner här!

Så, om jag gjorde en $("# Tab1Content").Dölj(), Jag döljer också Tab2 och jag kunde aldrig visa Tab2 om jag inte visar också på Tab1.  Jag kopierade och klistrade in koden till visual studio och det visade alla den div beklädnad upp snyggt, precis som de ska göra, Titta här:

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

Jag slog mitt huvud mot väggen ett tag och märkte att koden i den faktiska HTML genererar mycket tom <div> Märken, liksom:

<organ>

  <div id = "Tab1Content">

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

  </div>

  <div id = "Tab2Content">

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

  </div>

</organ>

(Ovanstående är waaaaaaaaaaaay banaliseras.  Tom div-taggarna är helt giltiga. Några av mina <div> Märken var fulla av innehåll, men många fler var inte.  Jag kom till insikten att min <XSL:för varje> direktiven avger i kortform div-taggar när xsl:för varje inte "hitta några data.  Jag tvingas en HTML-kommentar till utdata, som visas:

image

 

När jag gjorde det, alla div uppradade snyggt och min fliken växling började arbeta.

Som alltid, Jag hoppas att detta hjälper någon i en nypa.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Quick Fix: "Content-type namnet"$ resurser:ReportServerResources … kan inte innehålla … specialtecken”

Jag har spenderar tid rensa upp en SharePoint 2010 webbplats och en av frågorna som rensning som avser en skadad / felaktigt installerad SQL Server Report Services frågan.  Problemet uppstod när en av mina kolleger försökte spara en webbplats som en mall och sedan skapa skapar en ny webbplats som bygger på mallen.  Spara drift fungerade bra, men när hon försökte skapa den nya webbplatsen, SharePoint visas följande felmeddelande:

Fel

Innehållstyp namnet "$ resurser:ReportServerResources,DataSourceContentTypeName;"kan inte innehålla: \ / : * ? “ # % < > { } | ~ & , två på varandra följande perioder (..), eller specialtecken såsom en flik.

Här är en skärmen cap:

 

image

Jag hade en titt på vilka innehållstyper på webbplatsen och hitta det:

image

Dessa innehållstyper är klart ohälsosamt.

Problemet verkar komma en hel del på Internet och det verkar inte finnas ett enda samförstånd om hur man ska lösa det.  Jag hittade en praktisk tabell som mappats felaktigt innehållstyp namnen till bra innehållstyp namn här: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Jag uppdaterat dem alltså manuellt:

image

(BrightStarr namnet är självklart tillval, men det skadar inte Leende )

Detta tillät mig att skapa en ny mall och didn't break något på andra webbplatser, inklusive vissa PerformancePoint Server-grejer som en helt annan grupp människor har arbetat med.  Jag var då kunna skapa en ny webbplats på mallen.  Framgång!

Jag är inte säker på att detta är en 100% lösning, men det fick mig och alla inblandade förbi detta irriterande fel.  Om jag hittar något nytt, Jag ska skicka en uppdatering.  Min nervositet härrör från det faktum att dessa namn inte bör vara fel i första hand och genom att fastställa visningsnamn, Jag inte tangerar det interna namnet. 

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

En orsak för "skaparen av det här felet inte angav en anledning.”

Jag har gjort en hel del arbete med SharePoint search-på sistone och särskilt klassen KeywordQuery, egenskaper och metoder.

Om du vill att resultatuppsättningen till resultat utöver de vanliga misstänkta (se här), du lägger till det i SelectedProperties samling, som i:

myKeywordQuery.SelectProperties.Add("xyzzy");

Stort tack och ett tips av en keps till Corey Roth och denna oerhört hjälpsamma blogginlägg (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

I mitt fall, "xyzzy" inte är faktiskt en hanterad egenskap.  När jag har lagt till det SelectedProperties ändå, SharePoint kastade en av min favorit någonsin runtime undantag:

"Skaparen av det här felet angav inte ett skäl."

Jag gillar särskilt kapital "R" i skäl.  Detta låter för mig som .net motsvarande"Jag har ingen mun, och jag måste skrika.”

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Praktisk: Standard resultatet från KeywordQuery sökning

När du anropar Execute() metoden på en KeywordQuery, Du kan skapa en ResultTable som bygger på ResultType.RelevantResults.  Denna kodavsnitt illustrerar vad jag menar:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

Den resulterande tabellen kommer att ha följande kolumner av information: 

Arbets-ID
Rang
Avdelning
Författare
Storlek
Sökväg
Beskrivning
Skriva
Platsnamn
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Jag kommer denna lista från en SharePoint 2010 miljö, Enterprise edition.  Förhoppningsvis blir det praktiskt till någon i framtiden.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

En anledning till: "Det gick inte att extrahera cab-filen i lösningen”

När du arbetar med en webbdel för visual studio-projektet idag, Jag gjorde en mindre re-org vissa filer sättas i mappen _layouts som en del av driftsättningsprocessen. Särskilt, Jag har bytt namn en JS-fil från "TypeAhead.js" till "TypeAhead(gamla).JS"  Jag planerar att ta bort det så snart som dess efterföljare "TypeAhead.js" visar sig rätt.  Det såg ut såhär:

image

Detta orsakat omedelbart problem med visual studio när jag försökte distribuera projektet:

Fel uppstod i distributionen steg "Lägga till lösning": Det gick inte att extrahera cab-filen i lösningen.

Det visar sig att du inte bör lägga en parentes i filnamn.  Jag tagit bort den parens och som löst problemet.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Ännu mer jQuery–Ändra storlek på en bild-exempel

Jag ärvt en webbdel från en gammal klienttillverkaren och har ett imageproblem storlek.  Bilderna ska vara 60×50 men av någon udda anledning, den ursprungliga leverantören tvingade dem till 42×42, så det ser ut squashed:

 

Bra bild

Dålig bild

Här är markering (något förenklat):

<tabell klass = "extended-outlook">
  <thead>
    <TR>
      <TH  bredd = 100′>3 Tisdag</TH>
    </TR>
  </thead>

  <tbody>
    <TR klass = "prognos">
      <TD bredd = "100′>
        <UL>
          <Li klass = 'hög'>Hög: 72&deg;F</Li>
          <Li klass = "låg">Låg: 44&deg;F</Li>
          <Li klass = "villkor">Soliga
            <img src =’
http://deskwx.WeatherBug.com/images/Forecast/icons/Localized/60×50/en/trans/cond007.PNG’ Bredd ='42’ höjd ='42’ ALT =” />
          </Li>
        </UL>
      </TD>
    </TR>

  </tbody>

</tabell>

Du ska notera att även om den sökvägen till själva bilden visar korrekt (60×50) den ursprungliga leverantören tvingade det 42×42.  Varför?  Galen.

Hur som helst, Jag ville ha en snabb och enkel lösning på denna fråga och jag vände sig till jQuery.  Tricket var att hitta alla de tillämpliga <IMG> taggar.  Ville inte dölja med andra img-taggar (som finns det många).  Denna bit av jQuery gjorde tricket:

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

<skript type = "text/javascript">
     $(dokument).redo(funktionen () {

         $("li.condition > IMG ").varje(funktionen (index, objekt)
           
{
             $(objekt).CSS("bredd", "60"); 
             $(objekt).CSS("höjd", "50");
            });
     }); // Om dokumentet belastning
</skript>

Den biten av kod finner insamling <Li> Märken vars klass är "villkor" och <IMG> barn.  Det går sedan igenom allt detta.  Arbetade som en charm.

Jag skulle förmodligen effektivisera det, men jag aldrig var en slags unix kille som löst π till 18 siffror precision med hjälp av sed och awk och jag är inte sådan om jQuery guy antingen Leende.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Parsning av XML med LINQ

Här är en snabb exempel med LINQ för att tolka vissa  XML- och få vid söta, söt attribut däri.

Här är jag vill parsa XML:

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

    <PageLayout namn = "xyzzy">
      <Flikar>
        <Fliken TabOrder = "1" TabLabel = "x" SharePointContentType = "en" AdditionalConstraints = "ac1" />
        <Fliken TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Flikar>
    </PageLayout>

    <PageLayout namn = "xyzzy2">
      <Flikar>
        <Fliken TabOrder = "100" TabLabel = "x" SharePointContentType = "en" AdditionalConstraints = "ac1" />
        <Fliken TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Fliken TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Flikar>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Jag vill bygga upp vissa flikar under körning av tolkning av ovanstående.  Mina flikar är beroende av en sidlayout.  Om min sida layoutens namn är "xyzzy2" då jag vill få flikar 100, 101 och 103 (flikarna i <PageLayout namn = "xyzzy2">).

Här är LINQ som gör det:

var allTabs =
              från p i
                  XElement.Parse(theXmlToParse).
                 
Element("PageLayouts").
                  Element("PageLayout")
              där (p.Attribute("namn").Value.Equals("xyzzy2"))
              från m i p.Elements("Flikar").Element("Tab")
              Välj m;

          Results.text = sträng.Tom;

          foreach (var aTab i allTabs)
          {
              Results.text =
                  "Tabbordning: " + aTab.Attribute("TabOrder").Värde + " |" +
                  "Fliken etikett: " + aTab.Attribute("TabLabel").Värde + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Värde + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Värde + "r";
          }

I ovanstående, variabeln "theXmlToParse" är en strängvariabel, men du kan använda lasten() metoden på en dataström om du gillar.

"Resultat" är en etikett på ett webbformulär och när denna kod körs, Det ser ut så här:

SNAGHTML11cd2e7c

Jag har inte räknat ut hur du sorterar resultaten ännu, så jag lämnar som för ett framtida blogginlägg.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery och anonyma användare

Jag aktiverade anonym åtkomst i min webbplats att testa ut en webbdel för sökning som jag har utvecklats och att inga stora förvåning, det fungerade ganska inte.  Anonym åtkomst är ganska mycket alltid en utmaning för mig.

I detta fall, den ursprungliga sökningen kördes inte av någon anledning.  Jag skulle vilja säga att det var kör men det inte återvänder några resultat.  Jag använder KeywordQuery för den första visningen.

Jag gjorde en snabb sökning och denna blogginlägg från"sowmyancs"KOM ganska snabbt: “SharePoint 2010 Sök: inte visar några resultat för anonyma användare?”  Att blogginlägg beskriver problemet från ett ut i rutan Nyckelord sökning perspektiv men problemet var liknar mine – fungerade det för autentiserade användare och för anonyma användare, men anonyma användare fick inga resultat. 

Jag har följt de instruktioner och bang!  Det löste mitt problem.  Jag är inte säker på vad biverkningar som detta kommer att få och de kan visa sig vara ett problem, men kort sikt resultatet är till hjälp.

Klicka på via bloggen:

image

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery och egenskapen HiddenConstraints

Jag har gjort lite arbete med den KeywordQuery objekt i SharePoint 2010 och utnyttjar den HiddenConstraints Egenskapen.

Hittade inte något omedelbart användbar information på som egenskapen, så jag trodde jag skulle snabbt anteckna hur jag har använt det.

Såvitt jag kan berätta, Detta är en automatisk villkoret läggs till frågan så att du kan sortera Park det det och inte oroa.  Som sådana, Det är bara ett annat nyckelord (eller en uppsättning sökord) och modifierare som du kan skriva i att Användargränssnittet när du gör en nyckelordssökning.  Här är ett exempel:

keywordQuery.HiddenConstraints = "räckvidd:\"Industry" ";

Du kan lägga till ytterligare villkor med utrymme avgränsare.

keywordQuery.HiddenConstraints = "räckvidd:\"Industry" Defense";

Ovanstående säger på engelska, "kör ett nyckelord söker"försvar"och dessutom, Använd "Industrin" scope.

Här är ett annat sätt att se på det:

image

Jag har använt det för att ge ett sammanhang-beroende automatiska scope på en anpassad webbdel.  När användaren klickar på en flik och klickar på sökknappen, fliken dikterar ett särskilt sökomfattningen.  Det fungerar väl så långt.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Exempel: XSLT skapa HTML-Href

Jag har varit gör lite XSL-grejer på sistone och trodde jag skulle sätta ihop ett prov för min framtida referens och som kan vara av värde för oss alla XSLT-ers gör en levande i Internet.

Överväga följande XML:

<FdcSearchTabsCollection Count = "2">
  <SearchTab Label = "industrin" Sorteringsordning = "00" Label = "Industri" SearchConstraints = "contenttype:Industrin" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <SearchTab Label = "praxis" Sorteringsordning = "01" Label = "Praxis" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Följande XSL-utdrag kommer att generera en sorterad lista över href flikar:

<XSL:mallen matchning = "FdcSearchTabsCollection" XML:mellanslag = "bevara">
   
    <!– Alla"" fliken –>
    <a href = "javascript:ViewTab("Alla")">Visa alla</en>
   
    <!– Varje enskild flik –>
    <!– Iterera genom alla flikar och Visa rätt  Länkar. –>
    <XSL:för varje Välj = "SearchTab">
      <XSL:sortera select="@SortOrder"/>

      …
      <a href = "javascript:ViewTab(‘{@TabID}’)"><XSL:värdet av select="@Label"/></en>
    </XSL:för varje>

    <br /> 
   

   </XSL:mall>

Här är vad det ser ut i SharePoint:

SNAGHTML78aa2cb

 

 

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin