Nieskończoność zagnieżdżanie <DIV> Znaczniki i jQuery

To wydaje się podobnie jak takich tematów oddball, Nie jestem pewien, że jest naprawdę warto blogi o, ale która nigdy nie została zatrzymana mnie przed, tak here we go Uśmiech

Pracuję w projekcie, gdzie I 'm ciągnięcie niektórych danych z wyszukiwania, Zapakowanie do wiadomości XML, a następnie ten XML jest ostatecznie przekształcone w HTML za pomocą XSLT.  Zaangażowanych jest dużo jQuery, jeden bit który implementuje niektóre funkcje przełączania zakładek.  Po kliknięciu na karcie (naprawdę, a <DIV>), jQuery wywołuje .hide() i .show() na różne bloki DIV (ładowania strony początkowej pobrań całej zawartości, więc nie są w tym przypadku nie postbacks).

Pęczek hours ago, kartę przełączania logiki zaczęła się nieregularne i go nie wykazują jedną z moich kart.  I ostatecznie śledzone go do faktu tego programu internet explorer (co najmniej) uważali, że <DIV> znaczniki zagnieżdżone daleko, znacznie głębiej niż zamierzone.Dowodzą Wikimedia :

-<DIV id = "Tab1Content">
  -<DIV>
    -<DIV>
      -<DIV id = "Tab2Content">
        -<DIV>
           …………………………
                   </DIV>  <— Wreszcie wykazujące została zamknięta aż tu!

Tak, Jeśli robiłam $("# Tab1Content").Ukryj(), Byłoby także ukryć Tab2 i może nigdy nie pokazać Tab2 jeśli nie też wyświetlić Tab1.  Skopiowany i wklejony kod do programu visual studio i wykazało wszystkie div. hamulcowej w górę estetycznie, tak, jak zostały dopełnione robi, Szukasz like this:

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

Beat my head against the wall chwilΩ i zauważył, że rzeczywista HTML kod został wytwarzających nadmiernych pusty <DIV> znaczniki, Podobnie jak:

<organ>

  <DIV id = "Tab1Content">

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

  </DIV>

  <DIV id = "Tab2Content">

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

  </DIV>

</organ>

(Powyższe jest waaaaaaaaaaaay bardzo uproszczona.  Znaczniki div puste są całkowicie prawidłowe. Niektóre z moich <DIV> znaczniki były pełnej zawartości, jednak wiele więcej nie były.  Ja przyszedłem do realizacji, Moje <XSL:dla każdego> dyrektyw były emitujących formularzu krótkie znaczniki div, kiedy xsl:dla każdej nieoczekiwane "znaleźć żadnych danych.  Komentarz HTML I zmuszony do produkcji, jak pokazano:

image

 

Po I nie, wszystkie div wyrównana estetycznie i moją kartę przełączania rozpoczął.

Jak zawsze, Mam nadzieję, że dzięki temu kogoś w pinch.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Quick Fix: "Nazwa typu zawartości '$ zasobów:ReportServerResources … nie może zawierać … znaki specjalne”

I już zostały poświęcenie czasu na czyszczenie programu SharePoint 2010 witryny i jedną z kwestii oczyszczanie odnosi się do uszkodzony / niepoprawnie zainstalowany problem Report Services programu SQL Server.  Problem pojawił się po jednym z moich kolegów, próbowano zapisać witrynę jako szablon, a następnie utworzyć utwórz nową lokację oparte na tym szablonie.  Zapisz operacji pracowała prawidłowo, ale gdy próbowała utworzyć nowej witryny, SharePoint wyświetlany jest następujący komunikat o błędzie:

Błąd

Nazwa typu zawartości '$ zasobów:ReportServerResources,DataSourceContentTypeName;"nie może zawierać: \ / : * ? “ # % < > { } | ~ & , dwóch kolejnych okresów (..), lub znaki specjalne, takie jak karta.

Oto WPR ekranu:

 

image

Miał spojrzenie na typy zawartości witryny i znaleźć to:

image

Te typy zawartości są wyraźnie niezdrowy.

Problem ten wydaje się nadejdzie partii sieciach internetowych i tam nie wydają się być pojedynczy konsensusu w sprawie jak rozwiązać problem.  Znalazłem poręczny tabeli, która mapowane nazwy zły typ zawartości do nazwy dobrej typ zawartości tutaj: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  I ręcznie zaktualizować je thusly:

image

(BrightStarr w nazwie jest oczywiście opcjonalne, ale nie zaszkodzi Uśmiech )

Ten pozwolił mi utworzyć nowy szablon i nie coś psuje w innych witrynach, w tym niektóre rzeczy PerformancePoint Server, który pracuje zostały całkowicie różne grupy osób.  Następnie istniała możliwość tworzenia nowej witryny na tym szablonie.  Sukces!

Nie wiem, czy jest to 100% Roztwór, ale got me oraz wszyscy zaangażowani w przeszłości to irytujące błąd.  Jeśli znaleźć coś nowego, Będziesz wysłać aktualizację.  Moje nerwowość wynika z faktu, że te nazwy nie być niewłaściwy w pierwszym rzędzie i poprzez ustalenie nazwę wyświetlaną, I 'm nie dotykają nazwę wewnętrzną. 

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Jedną z przyczyn dla "twórca ten błąd nie określono przyczynę.”

I już działalność partii pracy z wyszukiwania programu SharePoint lately i specjalnie klasę KeywordQuery, właściwości i metody.

Jeśli chcesz, aby zestawu wyników do zwracają wyniki poza podejrzani (patrz: tu), można ją dodać do kolekcji SelectedProperties, jak w:

myKeywordQuery.SelectProperties.Add("xyzzy");

Dziękujemy i Porada kapelusz do Corey Roth i to ogromnie pomocne blogu (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

W moim przypadku, "xyzzy" nie jest rzeczywiście właściwością zarządzanych.  Po dodaniu jej do SelectedProperties mimo to, SharePoint zwrócił jedną z moich ulubionych kiedykolwiek obsługi wyjątków:

"Twórca ten błąd nie określił powodem."

Lubię szczególnie kapitału "R" w przyczyny.  To dźwięki do mnie jak.NET odpowiednik"I have no mouth, i I must scream.”

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Przystępne: Domyślnie wyniki wyszukiwania KeywordQuery

Kiedy wywołać Execute() Metoda KeywordQuery, można utworzyć ResultTable oparte na ResultType.RelevantResults.  Ten fragment kodu ilustruje, co znaczy:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

Wynikowej tabeli będą miały następujące kolumny informacji: 

Identyfikator pracy
Ranga
Tytuł
Autor
Rozmiar
Ścieżka
Opis
Zapis
Nazwa_witryny
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Ta lista I pochodzące z programu SharePoint 2010 środowisko, Enterprise edition.  Mamy nadzieję, że będzie przydatne do kogoś w przyszłości.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Jednym z powodów: "Nie można wyodrębnić plik cab w roztworze”

Podczas pracy na część sieci web programu visual studio projektu dzisiaj, I did drobne org re niektóre pliki zostaną wprowadzone do folderu _layouts jako część procesu wdrażania. W szczególności, I nazwy pliku js z "TypeAhead.js" do "TypeAhead(Stary).js"  Zaplanować go usunąć, zaraz po jego następca "TypeAhead.js" okazuje się poprawne.  To wyglądało to:

image

To natychmiast spowodował problem z programu visual studio, kiedy próbuję wdrażanie projektu:

Wystąpił błąd podczas wdrażania krok "Dodaj rozwiązanie": Nie można wyodrębnić plik cab w roztworze.

Okazuje się, że nie należy umieszczać nawias w nazwach plików.  Mogę usunąć parens i który rozwiązał problem.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Jeszcze więcej jQuery–Rozmiar Przykładem obrazu

I dziedziczone składnika web part dostawcy starych klienta i ma problemu rozmiar obrazu.  Obrazy należy 60×50 jednak z jakiegoś powodu nieparzysta, oryginalny dostawcy zmusiły je do 42×42, tak wyglądają squashed:

 

Dobrą jakość obrazu

Zły obraz

Oto znaczników (nieco uproszczony):

<Tabela klasy = "rozszerzony programu outlook">
  <THEAD>
    <TR>
      <TH  Szerokość = "100′>3 Wtorek</TH>
    </TR>
  </THEAD>

  <tbody>
    <Klasa TR = "Prognoza">
      <szerokość TD = "100′>
        <UL>
          <Klasa li = "wysoki">Wysokie: 72&DEG;F</Li>
          <Klasa li = "niski">Niski: 44&DEG;F</Li>
          <Klasa li = "warunkiem">Słoneczny
            <img src =’
http://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/EN/trans/cond007.PNG’ szerokość ='42’ wysokość ='42’ ALT =” />
          </Li>
        </UL>
      </TD>
    </TR>

  </tbody>

</Tabela>

Będziesz, mimo że Uwaga Ścieżka do samego obrazu pokazuje właściwego wymiaru (60×50) oryginalny dostawcy zmusił go w 42×42.  Dlaczego?  Szalony.

Mimo to, Chciałem szybkie i proste rozwiązanie tego problemu i ja obróciłem się jQuery.  Lewę było zlokalizować wszystkie odpowiednie <img> znaczniki.  Nie chcę zakrycie z innych znaczników img (którego istnieje wiele).  Ten bit jQuery brała lewy:

<skrypt typu = "text/javascript" src ="http://AJAX.googleapis.com/AJAX/Libs/jQuery/1.5/jQuery.min.js"></skrypt>

<skrypt typu = "text/javascript">
     $(dokument).gotowe(Funkcja () {

         $("li.condition > img ").Każdy(Funkcja (Indeks, element)
           
{
             $(element).CSS("szerokość", "60"); 
             $(element).CSS("wysokość", "50");
            });
     }); // Ładuj dokumentu
</skrypt>

Ten bit kod znajdzie kolekcji <Li> tagi, których klasa jest "warunki" i <img> dzieci.  Następnie iteracyjnie przegląda wszystko.  Pracował jak urok.

Prawdopodobnie może usprawnić, ale nigdy nie była rodzaju guy unix, który rozwiązał π do 18 cyfr dokładności przy użyciu sed i awk i I 'm not tego rodzaju jeśli jQuery guy albo Uśmiech.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Przetwarzanie XML z LINQ

Tutaj jest przykładem szybkie użycie LINQ do analizy niektórych  XML i get na słodkie, słodkie atrybuty tam.

Oto kod XML ma przeanalizować:

<?wersja pliku XML = "1.0" Kodowanie = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <Nazwa PageLayout = "xyzzy">
      <Tabulatory>
        <Karta TabOrder = "1" TabLabel = "x" SharePointContentType = "" AdditionalConstraints = "ac1" />
        <Karta TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "AC2 ułatwia wprowadzanie" />
      </Tabulatory>
    </PageLayout>

    <Nazwa PageLayout = "xyzzy2">
      <Tabulatory>
        <Karta TabOrder = "100" TabLabel = "x" SharePointContentType = "" AdditionalConstraints = "ac1" />
        <Karta TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "AC2 ułatwia wprowadzanie" />
        <Karta TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Tabulatory>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Chcę, aby stworzyć niektóre karty w czasie wykonywania przez analizowanie powyższego.  Moje karty zależą od układu strony.  Jeśli nazwa Mój układu strony jest "xyzzy2" następnie chcę uzyskać karty 100, 101 i 103 (kart <Nazwa PageLayout = "xyzzy2">).

Oto LINQ, który robi:

var allTabs =
              z p w
                  XElement.Parse(theXmlToParse).
                 
Elementy("PageLayouts").
                  Elementy("PageLayout")
              w przypadku gdy (p.Attribute("Nazwa").Value.Equals("xyzzy2"))
              od m w p.Elements("Tabs").Elementy("Karta")
              Wybierz m;

          Results.text = ciąg.Puste;

          foreach (var. aTab w allTabs)
          {
              Results.Text =
                  "Kolejność tabulatorów: " + aTab.Attribute("TabOrder").Wartość + " |" +
                  "Etykieta kartę: " + aTab.Attribute("TabLabel").Wartość + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Wartość + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Wartość + "r";
          }

W powyższym, Zmienna "theXmlToParse" jest zmienna typu string, jednak można użyć obciążenia() Metoda strumienia, jeśli chcesz.

"Wyniki" jest etykietą w formularzu sieci web i gdy ten kod jest wykonywany, wygląda to:

SNAGHTML11cd2e7c

Jeszcze nie pracowałem jak sortować wyniki jeszcze, tak pozostawiam że dla przyszłych blogu.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery i użytkowników anonimowych

Włączony dostęp anonimowy w mojej witrynie do testowania wyszukiwania składnika web part, który już I rozwoju oraz do nie niespodziankę, to nie dość działało.  Dostęp anonimowy jest całkiem dużo zawsze wyzwanie dla mnie.

W tym przypadku, początkowe wyszukiwania nie był uruchomiony z jakiegoś powodu.  Mogę powiedzieć, że był uruchomiony, ale został nie zwraca żadnych wyników.  Używam KeywordQuery dla tego początkowego wyświetlania.

I did szybkiego wyszukiwania i niniejszego ogłoszenia blogu przez"sowmyancs"wszedł dość szybko: “SharePoint 2010 Wyszukiwanie: nie wykazujących żadnych wyników dla użytkowników anonimowych?”  Wpis blogu opisano problem z poza pole wyszukiwania słowo kluczowe z punktu widzenia, ale zachowanie była podobna do kopalni – pracował dla użytkowników uwierzytelnionych i dla użytkowników anonimowych, ale użytkowników anonimowych żadnych wyników. 

A następnie instrukcje i bang!  Rozwiązać mój problem.  Nie jestem pewien, jakie efekty uboczne, które będzie to miało i one mogą okazać się problem, ale krótkim okresie jest pomocne.

Kliknij na poprzez blogu:

image

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery i właściwość HiddenConstraints

I już zostało to trochę pracy z KeywordQuery obiekt w programie SharePoint 2010 i korzystające z HiddenConstraints Właściwość.

Nie mogę znaleźć żadnych natychmiast pomocnych informacji na właściwości, Dlatego myślę, że zamierzam szybko karteczce jak I korzystałeś już z jej.

Jak mogę sprawdzić, to jest ograniczeniem automatycznie dodana do kwerendy, dzięki czemu można sortować Park go tam i nie martwić się o.  Jako takie, to właśnie innego słowa kluczowego (lub zestaw słów kluczowych) i modyfikatorów, które użytkownik może wpisać w do interfejsu użytkownika podczas wyszukiwania słowa kluczowego.  Oto przykład:

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

Można dodać dodatkowe ograniczenia ogranicznikiem miejsca.

keywordQuery.HiddenConstraints = "zakres:\"Industry" obrony";

Powyższe jest informacją, w języku angielskim, "Uruchom kwerendę słowa kluczowego szukasz"obrony"i ponadto, użyć zakresu "Przemysłu".

Inny sposób wyszukiwania to:

image

I korzystałeś już z jej zapewnienie zależne od kontekstu zakresu automatyczne na niestandardowych składników web part.  Gdy użytkownik kliknie na karcie i kliknie przycisk wyszukiwania, karcie narzuca zakres wyszukiwania określonego.  Działa również tak dalece.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Przykład: XSLT tworzenie HTML Href

I już zostały ostatnio ten bit XSL rzeczy i uważa się, że byłoby układam razem próbkę w moim przyszłości i że może być wartości dla wszystkich nas XSLT-ers dokonywania życia w internets.

Należy wziąć pod uwagę następujące XML:

<FdcSearchTabsCollection Count = "2">
  <Etykieta SearchTab = "przemysł" SortOrder = "00" Label = "Przemysł" SearchConstraints = "contenttype:Przemysł" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <Etykieta SearchTab = "praktyk" SortOrder = "01" Label = "Praktyki" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Poniższy urywek kodu XSL wygeneruje posortowanej listy odwołania HREF kart:

<XSL:szablon dopasowanie = "FdcSearchTabsCollection" XML:przestrzeń = "zachowanie">
   
    <!– Wszystkie"" Karta –>
    <href = "javascript:ViewTab('Wszystkie')">Wyświetlanie wszystkich</a>
   
    <!– Każda indywidualna karta –>
    <!– Iterację wszystkich kart i wyświetlić prawidłowe  łącza. –>
    <XSL:dla każdej = wybierz "SearchTab">
      <XSL:Sortowanie select="@SortOrder"/>

      …
      <href = "javascript:ViewTab(‘{@ TabID}’)"><XSL:wartość z select="@Label"/></a>
    </XSL:dla każdego>

    <BR /> 
   

   </XSL:szablon>

Oto co wygląda jak w programie SharePoint:

SNAGHTML78aa2cb

 

 

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin