Eindeloos nesten <div> Tags en jQuery

Dit lijkt een excentrieke onderwerp, Ik ben niet zeker dat het is echt de moeite waard bloggen over, maar dat heeft nooit gestopt me vóór, Dus hier gaan we Glimlach

Ik ben uit te werken op een project waar ik te sommige gegevens uit een zoekopdracht trekken ben, verpakking het omhoog in een XML-bericht en vervolgens dat XML wordt uiteindelijk omgezet in HTML via XSLT.  Er is een heleboel jQuery betrokken, een beetje waarvan sommige tabben functionaliteit implementeert.  Wanneer u klikt op een tabblad (echt, een <div>), jQuery roept .hide() en .show() op diverse divs (de eerste pagina geladen gedownload alle inhoud, zodat er in dit geval geen terugsturen zijn).

Een heleboel uren geleden, het tabblad schakelen logica begon te gedragen onregelmatig en het zou niet een van mijn tabs tonen.  Ik uiteindelijk gevolgd het neer op het feit dat internet explorer (ten minste) dacht dat de <div> Tags genest ver, veel dieper dan bestemd.De werkbalk ontwikkelaar zou weergeven:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— Ten slotte tonen het helemaal naar beneden hier werd gesloten!

Dus, Als ik deed een $("# Tab1Content").verbergen(), Ik zou ook Tab2 verbergen en ik kon nooit tonen Tab2 als ik niet ook Tab1.  Ik gekopieerd en geplakt de code omhoog in visual studio en het bleek alles voor de div's voering tot keurig, net als zij waren verondersteld om te doen, op zoek als dit:

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

Ik sloeg mijn hoofd tegen de muur voor een tijdje en gemerkt dat in de werkelijke HTML code is het genereren veel van lege <div> Tags, zoals:

<lichaam>

  <div id = "Tab1Content">

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

  </div>

  <div id = "Tab2Content">

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

  </div>

</lichaam>

(Het bovenstaande is waaaaaaaaaaaay gesimplificeerd.  De lege div-tags zijn volkomen geldig. Sommige van mijn <div> Tags waren vol van inhoud, maar veel meer waren niet.  Ik kwam tot het besef dat mijn <XSL:for-each> richtlijnen werden de korte vorm uitstoten div tags wanneer de xsl:for-each niet ' gegevens vinden.  Ik gedwongen een HTML-commentaar in de output, zoals:

image

 

Nadat ik deed dat, alle de div's mooi opgesteld en begon te werken mijn tabblad schakelen.

Zoals altijd, Ik hoop dat dit helpt iemand in een snuifje.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Quick Fix: "De naam van inhoudstype '$ Resources:ReportServerResources … mag geen bevatten … speciale tekens”

Ik heb de besteding van enige tijd een SharePoint opruimen 2010 site en een van de cleanup kwesties heeft betrekking op een corrupte / onjuist geïnstalleerd SQL Server verslag Services kwestie.  Het probleem ontstond toen een van mijn collega's wilde een site opslaan als sjabloon en maak vervolgens een nieuwe site op basis van die sjabloon maken.  Het opslaan operatie werkte boete, maar toen ze probeerde te maken van de nieuwe site, SharePoint weergegeven het volgende foutbericht:

Fout

De naam van inhoudstype '$ Resources:ReportServerResources,DataSourceContentTypeName;' mag geen bevatten: \ / : * ? “ # % < > { } | ~ & , twee opeenvolgende periodes (..), of speciale tekens zoals een tab.

Hier is een scherm GLB:

 

image

Ik had een blik op de inhoudstypen in de site en vond dit:

image

Die inhoudstypen zijn duidelijk ongezonde.

Dit probleem lijkt te veel op de Internets komen en er lijkt niet een interne consensus over hoe op te lossen.  Ik vond een handige tabel die de slechte inhoudstype namen aan goede inhoudstype namen hier toegewezen: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Ik handmatig bijgewerkt hen thusly:

image

(BrightStarr in de naam is uiteraard optioneel, maar het kan geen kwaad Glimlach )

Dit stond me toe om een nieuwe sjabloon te maken en niet om het even wat breken op de andere sites, waaronder sommige PerformancePoint Server dingen die een volledig andere groep van mensen werkten op.  Vervolgens kon ik een nieuwe site maken op de sjabloon.  Succes!

Ik ben niet zeker dat dit een 100% oplossing, maar het kreeg me en iedereen betrokken voorbij dit vervelende fout.  Als ik iets nieuws te vinden, Ik zal een update plaatsen.  Mijn nervositeit vloeit voort uit het feit dat deze namen niet moeten in de eerste plaats vergissen en door de vaststelling van de weergavenaam, Ik ben niet aanraken de interne naam. 

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Een oorzaak voor "de maker van deze schuld niet een reden specificeerde.”

Ik heb gedaan een heleboel werk met SharePoint search laatste tijd en specifiek de KeywordQuery klasse, eigenschappen en methoden.

Als u wilt dat de resultaatset om terug te keren resultaten boven en buiten de gebruikelijke verdachten (Zie hier), u toevoegen aan de collectie SelectedProperties, Als in:

myKeywordQuery.SelectProperties.Add("xyzzy");

Hartelijk dank en een tip van de hoed aan Corey Roth en deze enorm nuttig blogpost (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

In mijn geval, "xyzzy" is eigenlijk een beheerde eigenschap niet.  Wanneer ik toegevoegd aan SelectedProperties toch, SharePoint gooide een van mijn favoriete ooit runtime uitzonderingen:

"De maker van deze schuld specificeerde niet een reden."

Ik houd vooral de hoofdletter "R" in reden.  Dit klinkt voor mij als de.NETTO equivalent van"I have no mouth, and I must scream.”

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Handige referentie: Standaard resultaten van KeywordQuery Search

Wanneer u het aanroepen van de Execute() methode op een KeywordQuery, u kunt een ResultTable gebaseerd op ResultType.RelevantResults.  Dit codefragment illustreert wat ik bedoel:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

De resulterende tabel zal hebben de volgende kolommen met informatie: 

WorkId
Rang
Titel
Auteur
Grootte
Pad
Beschrijving
Schrijven
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Ik deze lijst afgeleid van een SharePoint 2010 milieu, Enterprise edition.  Hopelijk zal het worden handig om iemand in de toekomst.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Een van de redenen voor: "Failed to extract het cab-bestand in de oplossing”

Tijdens het werken aan een webonderdeel visual studio project vandaag, Ik heb een kleine re-org van sommige bestanden in de map _layouts worden gebracht als onderdeel van het implementatieproces. Specifiek, Mij verdopen een .js bestand van "TypeAhead.js" naar "TypeAhead(oude).js"  Ik ben van plan om het te verwijderen zo snel als zijn opvolger "TypeAhead.js" juiste bewijst.  Het zag er als volgt:

image

Dit veroorzaakt onmiddellijk een probleem met visual studio, toen ik probeerde om het project te implementeren:

Er is een fout opgetreden in implementatie stap "Oplossing toevoegen": Failed to extract het cab-bestand in de oplossing.

Het blijkt dat u niet een haakje in bestandsnamen moeten zetten.  Ik verwijderde de pars en dat het probleem opgelost.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Nog meer jQuery–Een voorbeeld van de Image Resize

Ik een webonderdeel geërfd van de oude leverancier van een klant en het heeft een imagoprobleem grootte.  De beelden moeten worden 60×50 maar voor sommige vreemde reden, de originele leverancier hen gedwongen 42×42, dus kijken ze geplet:

 

Goed imago

Slecht beeld

Hier is de markering (enigszins vereenvoudigd):

<tabel klasse = 'uitgebreid-outlook'>
  <THEAD>
    <tr>
      <th  breedte ='100′>3 Dinsdag</th>
    </tr>
  </THEAD>

  <TBODY>
    <klasse tr = 'forecast'>
      <TD breedte ='100′>
        <UL>
          <Li klasse = 'hoog'>Hoge: 72&DEG;F</Li>
          <Li klasse = "laag">Lage: 44&DEG;F</Li>
          <Li klasse = 'voorwaarde'>Zonnig
            <img src =’
http://deskwx.WeatherBug.com/images/Forecast/icons/localized/60×50/en/trans/cond007.png’ breedte ='42’ hoogte ='42’ ALT =” />
          </Li>
        </UL>
      </TD>
    </tr>

  </TBODY>

</tabel>

U zult merken dat hoewel de pad naar de afbeelding zelf toont de juiste dimensie (60×50) de originele leverancier gedwongen het in 42×42.  Waarom?  Gek.

Hoe dan ook, Ik wilde een snelle en gemakkelijke oplossing voor dit probleem en ik draaide me om jQuery.  De truc was om te zoeken alle van de passende <img> Tags.  Ik wilde niet met alle andere img-tags over muck (dat zijn er veel).  Deze bits van jQuery did naar de truc:

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

<script type = "text/javascript">
     $(document).klaar(functie () {

         $(' li.condition > img').elke(functie (index, item)
           
{
             $(item).CSS("breedte", "60"); 
             $(item).CSS("hoogte", "50");
            });
     }); // op document laden
</script>

Dat beetje van code vindt de collectie <Li> Tags waarvan klasse is "voorwaarde" en <img> kinderen.  Vervolgens doorlopen dat allemaal.  Werkte als een charme.

Ik zou waarschijnlijk het stroomlijnen, maar ik was nooit een de soort unix-kerel die opgelost π Aan 18 cijfers precisie met behulp van sed en awk en ik ben niet dat soort als jQuery guy hetzij Glimlach.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Parsing XML met LINQ

Hier is een snelle voorbeeld met LINQ to parse sommige  XML en krijgen op de zoete, Sweet attributen daarin.

Hier is de XML ik wilt parseren:

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

    <PageLayout naam = "xyzzy">
      <Tabbladen>
        <Tabvolgorde tab = "1" TabLabel = "x" SharePointContentType = "een" AdditionalConstraints = "ac1" />
        <Tabvolgorde tab = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Tabbladen>
    </PageLayout>

    <PageLayout naam = "xyzzy2">
      <Tabbladen>
        <Tabvolgorde tab = "100" TabLabel = "x" SharePointContentType = "een" AdditionalConstraints = "ac1" />
        <Tabvolgorde tab = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Tabvolgorde tab = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Tabbladen>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Ik wil bouwen sommige tabbladen in runtime door de bovenstaande parseren.  Mijn tabbladen afhangen van een pagina-indeling.  Als mijn pagina-indeling de naam is "xyzzy2" dan wil ik krijgen tabbladen 100, 101 en 103 (de tabbladen in <PageLayout naam = "xyzzy2">).

Hier is de LINQ dat het doet:

var allTabs =
              van p in
                  XElement.Parse(theXmlToParse).
                 
Elementen("PageLayouts").
                  Elementen("PageLayout")
              waar (p.Attribute("naam").Value.equals("xyzzy2"))
              van m in p.Elements("Tabs").Elementen("Tab")
              Selecteer m;

          Results.text = string.Leeg;

          foreach (var aTab in allTabs)
          {
              Results.Text =
                  "Tabvolgorde: " + aTab.Attribute("Tabvolgorde").Waarde + " |" +
                  "Tab Label: " + aTab.Attribute("TabLabel").Waarde + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Waarde + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Waarde + "r";
          }

In het bovenstaande, de variabele "theXmlToParse" is een string-variabele, maar u kunt de belasting() methode op een stroom als je.

"Resultaten" is een label op een webformulier en wanneer deze code wordt uitgevoerd, het ziet er als volgt:

SNAGHTML11cd2e7c

Ik heb niet gewerkt uit hoe de resultaten nog sorteren, dus ik dat voor een toekomstig blogpost laat.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery en anonieme gebruikers

Ik anonieme toegang ingeschakeld in mijn site te testen uit een webonderdeel zoeken die ik heb de ontwikkeling en geen grote verrassing, het werkte niet vrij.  Anonieme toegang is vrijwel altijd een uitdaging voor mij.

In dit geval, voor sommige reden was niet de eerste zoekopdracht uitgevoerd.  Ik moet zeggen dat het was hardlopen, maar het was niet terugkeren geen resultaten.  Ik gebruik de KeywordQuery voor dat eerste weergave.

Ik deed een snel zoeken en deze blogpost door"sowmyancs"vrij snel kwam: “SharePoint 2010 Zoek: niet resultaten alle voor anonieme gebruikers?”  Dat blog entry het probleem van een van het vak trefwoord zoeken perspectief beschrijft maar het gedrag vergelijkbaar met de mijne was-werkte het voor geverifieerde gebruikers en voor anonieme gebruikers, maar anonieme gebruikers kreeg geen resultaten. 

Ik volgde de instructies en bang!  Het opgelost mijn probleem.  Ik ben niet zeker wat dit zal hebben bijwerkingen en ze blijken kunnen te zijn een probleem, maar de korte termijn resultaat is nuttig.

Klik op via de blog:

image

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery en de HiddenConstraints eigenschap

Ik doe een beetje van het werk met de KeywordQuery object in SharePoint 2010 en gebruik maken van de HiddenConstraints eigenschap.

Ik heb niet vinden elke onmiddellijk nuttige informatie over de eigenschap, dus ik dacht dat ik zou snel noteren hoe ik het heb gebruikt.

Voor zover ik kan vertellen, Dit is een automatische beperking toegevoegd aan de query zodat u kunt sorteren van park het er en geen zorgen over.  Als zodanig, het is gewoon een ander trefwoord (of set zoekwoorden) en -parameters die u typen kunt aan de UI wanneer u een zoekwoord onderzoek doen.  Hier is een voorbeeld:

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

U kunt extra beperkingen met een spatie als scheidingsteken toevoegen.

keywordQuery.HiddenConstraints = "toepassingsgebied:\"Industry" Defense";

Het bovenstaande is te zeggen in het Engels, "Voer een trefwoord query op zoek naar"defensie"en bovendien, de "Industrie" bereik gebruiken.

Hier is een andere manier van kijken naar het:

image

Ik gebruik het om een context-afhankelijke automatische scope op een aangepaste webonderdeel.  Wanneer de gebruiker op een tabblad klikt en op een zoekknop, het tabblad dicteert een bepaalde zoekbereik.  Het werkt goed tot nu toe.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Voorbeeld: XSLT HTML Href maken van

Ik heb onlangs het doen van een beetje van XSL spullen en dacht dat ik zou samen te stellen een monster voor mijn toekomstige verwijzing en dat kan van waarde voor ons allemaal XSLT-ers maken van een leven in de internets.

Overweeg de volgende XML:

<FdcSearchTabsCollection telling = "2">
  <Label SearchTab = "industrie" SortOrder (sorteervolgorde) = "00" Label = "Industrieën" SearchConstraints = "contenttype:Industrie" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <Label SearchTab = "praktijken" SortOrder (sorteervolgorde) = "01" Label = "Praktijken" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

In het volgende XSL-fragment zal genereren een gesorteerde lijst van hrefs tabbladen:

<XSL:sjabloon match = "FdcSearchTabsCollection" XML:ruimte = "behouden">
   
    <!– De "all" tabblad –>
    <een href = "javascript:ViewTab('All')">Alles weergeven</een>
   
    <!– Elke afzonderlijke tab –>
    <!– Alle tabbladen doorlopen en weer de juiste  koppelingen. –>
    <XSL:for-each select = "SearchTab">
      <XSL:select="@SortOrder"/ sorteren>

      …
      <een href = "javascript:ViewTab(‘{@ TabID}’)"><XSL:waarde-van select="@Label"/></een>
    </XSL:for-each>

    <BR /> 
   

   </XSL:sjabloon>

Hier is hoe het eruit ziet in SharePoint:

SNAGHTML78aa2cb

 

 

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin