Безкрайно вложени SEARCH <DIV> Етикети и jQuery

Това изглежда като такава Одбол тема, Аз не съм сигурен, че е наистина си струва blogging за, но това никога не ми спря преди, така че тук ние отивам Усмивка

Аз съм работа по даден проект, където аз съм дърпа някои данни от търсене, пакетирането му в XML съобщение и след това тази XML в крайна сметка се преобразува в HTML чрез XSLT.  Има много на jQuery, участващи, една част от които реализира някои tabbing функционалност.  Когато щракнете върху даден раздел (Наистина, а <DIV>), jQuery извиква .hide() и .show() на различни divs (на началната страница натоварване изтегля цялото съдържание, така че няма никакви връщания обратно в този случай).

Няколко часа преди, раздела превключване на логиката започна да се държат erratically и тя няма да се покаже един от моите раздели.  Аз в крайна сметка го проследи до факта, че internet explorer (най-малко) Мислех, че <DIV> етикети, вложени далеч, далеч по-дълбоко отколкото е предвидено.Развивам оръдие ще покаже:

-<DIV id = "Tab1Content">
  -<DIV>
    -<DIV>
      -<DIV id = "Tab2Content">
        -<DIV>
           …………………………
                   </DIV>  <— най-накрая показва, че е затворен чак тук!

Така, Ако аз го направих $("#Tab1Content").Скрий(), Аз също така ще скриете Tab2 и никога не може да покаже Tab2 ако аз също не показват Tab1.  Аз копирани и поставили кода в visual studio и той показа всички на div подплата горе добре, точно като те би трябвало да се прави, гледам подобен този:

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

Бие главата ми срещу стената за известно време и забелязах, че в реалната HTML код е генериране много празни <DIV> Тагове, като:

<тяло>

  <DIV id = "Tab1Content">

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

  </DIV>

  <DIV id = "Tab2Content">

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

  </DIV>

</тяло>

(По-горе е waaaaaaaaaaaay опростени.  На празен div таговете са напълно валидни. Някои от моите <DIV> Tags са пълно съдържание, но много други не са.  Аз дойдох до осъзнаването, че ми <XSL:за всеки> директивите не се излъчва кратка форма когато Тагове div xsl:за всеки не "намери някакви данни.  Аз принудени HTML коментар в изхода, както е показано:

image

 

След като направих това, всички div подредени добре и ми tab превключване започва да работи.

Както винаги, Аз надежда този помагам някой в краен случай.

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Да намери бързо решение: "Име на тип съдържание на '$ ресурси:ReportServerResources … не може да съдържа … специални знаци”

Аз съм бил прекарва известно време почистване на SharePoint 2010 сайт и един от въпросите, Почистване се отнася до корумпирани / неправилно инсталирани услуги за отчет на SQL Server проблем.  Проблемът възниква, когато един от моите колеги се опитали да запишете сайта като шаблон и след това да създадете създаване на нов сайт, базиран на този шаблон.  Записване операция работи добре, но когато тя се опита да създаде нов сайт, SharePoint показва следното съобщение за грешка:

Грешка

Име на тип съдържание ' $Resources:ReportServerResources,DataSourceContentTypeName;"не може да съдържа: \ / : * ? “ # % < > { } | ~ & , два последователни периода (..), или специални знаци като табулатор.

Тук е на екрана капачка:

 

image

Аз имах поглед към типовете съдържание на сайта и открих това:

image

Тези типове съдържание са ясно нездравословни.

Този въпрос изглежда да излезе много на Internets и там не изглежда да бъде един консенсус за това как да го решим.  Намерих удобен таблица, които отразяват имената на лош тип съдържание към тип съдържание на добри имена тук: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Аз ги актуализира ръчно thusly:

image

(BrightStarr в името на е очевидно по избор, но тя не може да боли Усмивка )

Това ми позволи да се създаде нов шаблон и не прекъсва нещо на други сайтове, включително някои PerformancePoint сървър неща, които напълно различна група от хора са работили върху.  След това бях в състояние да създаване на нов сайт на шаблона.  Успех!

Аз не съм сигурен, че това е 100% разтвор, но тя ме и всички участващи минал този безпокоя грешка.  Ако намеря нещо ново, Аз ще пост актуализация.  Моят нервност произтича от факта, че тези имена не трябва да бъде погрешно на първо място и чрез определяне на показваното име, Аз не съм докосва вътрешния името. 

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Една причина за "създател на този отказ не определя причина.”

Съм правил много работа с SharePoint търсене напоследък и специално на KeywordQuery клас, свойства и методи.

Ако искате резултатите да върне резултати над и отвъд обичайните заподозрени (Вижте тук), го добавите към колекцията на SelectedProperties, както и в:

myKeywordQuery.SelectProperties.Add("xyzzy");

Много благодаря и върха на шапката да Кори Рот и този огромен полезен блог пост (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

В моя случай, "xyzzy" не е действително контролирано свойство.  Когато аз го добавя към SelectedProperties все пак, SharePoint хвърли един от любимите ми някога runtime изключения:

"Създател на този отказ не уточни причината."

Особено ми харесват столицата "R" в разума.  Това звучи ми като .NET еквивалент на"Аз не са в устата, и аз трябва да scream.”

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Хенди препратка: По подразбиране резултатите от KeywordQuery търсене

Когато се позове изпълнение() метод на KeywordQuery, Можете да създадете ResultTable, въз основа на ResultType.RelevantResults.  Този код фрагмент илюстрира какво имам предвид:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

Получената таблица ще има следните колони с информация: 

Същ WorkId
Ранг
Заглавие
Автор
Размер
Път
Описание
Пиша
Име на сайт
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Аз извлечени този списък от SharePoint 2010 околна среда, предприятие издание.  Надяваме се това ще бъде удобен на някого в бъдеще.

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Една от причините за: "Не можа да извлече на кабината файла в разтвора”

Докато работи върху visual studio уеб част на проекта днес, Направих малки re org на някои файлове да бъдат пуснати в папката на _layouts като част от процеса на разполагане. Специално, Аз преименуван .js файл от "TypeAhead.js" до "TypeAhead(Стар).JS"  Аз смятам да я премахнете, веднага след като наследника си "TypeAhead.js" е правилна.  Тя изглеждала по този:

image

Това незабавно причинени проблем с visual studio, когато се опитах да се разгръщат на проекта:

Възникна грешка в разполагане стъпка "Добави решение": Не можа да извлече на кабината файла в разтвора.

Се оказва, че трябва да поставяте скоба не в имена на файлове.  Аз parens и че решават проблема.

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Още повече jQuery–Преоразмеряване на пример изображение

Аз наследих уеб компонент от стария доставчик на клиента и има изображение размер проблем.  Изображенията трябва да бъде 60×50 но за някои странни причина, оригиналния доставчик ги принуждава в 42×42, така че те изглеждат смачкано:

 

Добър имидж

Лош имидж

Тук е за маркиране (донякъде опростен):

<маса клас = "разширена-outlook">
  <thead>
    <TR>
      <TH  ширина = "100′>3 Вторник</TH>
    </TR>
  </thead>

  <tbody>
    <TR клас = "прогноза">
      <TD ширина = "100′>
        <UL>
          <Li клас = "високо">Високо: 72&deg;F</Li>
          <Li клас = "ниска цена">Ниска: 44&deg;F</Li>
          <Li клас = "състояние">Слънчев
            <IMG src =’
HTTP://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/EN/Trans/cond007.png’ ширина = "42’ височина = "42’ ALT =” />
          </Li>
        </UL>
      </TD>
    </TR>

  </tbody>

</таблица>

Ще се отбележи, че въпреки че пътя до самото изображение показва правилното измерение (60×50) оригиналния доставчик е принуден в 42×42.  Защо?  Луд.

Все пак, Исках бързо и лесно решение за този проблем и аз се обърна към jQuery.  Номерът е да намерите всички от съответния <IMG> Тагове.  Аз не искам да се мотам с всички други img Тагове (от които има много).  Това малко на jQuery е трик:

<скрипт тип = текст/javascript"" SRC ="HTTP://AJAX.googleapis.com/AJAX/libs/JQuery/1.5/JQuery.min.js"></скрипт>

<скриптови тип = "текст/javascript">
     $(документ).готов(функция () {

         $("li.condition > IMG ").всеки(функция (индекс, елемент)
           
{
             $(елемент).CSS("ширина", "60"); 
             $(елемент).CSS("височина", "50");
            });
     }); // при зареждане на документ
</скрипт>

Този късче на код намира колекцията <Li> Тагове, чиято класа е "условие" и <IMG> деца.  Той след това повтаря през всичко това.  Работи като чар.

Вероятно може да рационализира го, но аз никога не е от вида на unix човек, този решен π за да 18 цифри прецизна sed и awk и аз не съм такъв, ако jQuery човек или Усмивка.

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Анализиране на XML с LINQ

Ето един бърз пример, с помощта на LINQ да анализира някои  XML и да получите в сладко, сладки атрибути в него.

Ето искам да прави разбор на XML:

<?XML версия = "1.0" кодиране = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout име = "xyzzy">
      <Раздели>
        <Раздел TabOrder = 1" TabLabel = "х" SharePointContentType = "_FITTED" AdditionalConstraints = "ac1" />
        <Раздел TabOrder = "2" TabLabel = "y" SharePointContentType = b" AdditionalConstraints = "ac2" />
      </Раздели>
    </PageLayout>

    <PageLayout име = "xyzzy2">
      <Раздели>
        <Раздел TabOrder = "100" TabLabel = "х" SharePointContentType = "_FITTED" AdditionalConstraints = "ac1" />
        <Раздел TabOrder = "101" TabLabel = "y" SharePointContentType = b" AdditionalConstraints = "ac2" />
        <Раздел TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Раздели>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Искам да изградят някои раздели по време на изпълнение от анализа по-горе.  Раздели зависят от оформлението на страница.  Ако моята страница оформление име е "xyzzy2", тогава искам да се раздели 100, 101 и 103 (разделите в <PageLayout име = "xyzzy2">).

Ето LINQ, който го прави:

var allTabs =
              от p в
                  XElement.Parse(theXmlToParse).
                 
Елементи("PageLayouts").
                  Елементи("PageLayout")
              където (p.Attribute("име").Value.Equals("xyzzy2"))
              от м в p.Elements("Раздели").Елементи("Раздел")
              Изберете м;

          Results.Text = низ.Празен;

          foreach (var надеждно хидроизолирана в allTabs)
          {
              Results.Text =
                  "Раздела ред: " + aTab.Attribute("TabOrder").Стойност + " |" +
                  "Етикет на раздел: " + aTab.Attribute("TabLabel").Стойност + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Стойност + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Стойност + "r";
          }

В по-горе, променливата "theXmlToParse" е низова променлива, но можете да използвате натоварване() метод на един поток, ако ви харесва.

"Резултати" е етикет на уеб форма и когато този код изпълнява, Тя изглежда така:

SNAGHTML11cd2e7c

Не съм работил, как да сортирате резултатите още, така че аз ще оставя това за бъдеща блог пост.

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery и на анонимни потребители

Аз разрешен анонимен достъп в моя сайт, за да проверите уеб компонента на търсене, аз съм се развива и да няма голяма изненада, той съвсем не работи.  Анонимен достъп е почти винаги е предизвикателство за мен.

В този случай, първоначалното търсене не работи по някаква причина.  Аз трябва да кажа, че е изпълнението, но той не е бил да върне никакви резултати.  Аз съм с KeywordQuery за тази първоначална дисплей.

Направих бързо търсене и този блог съобщение от"sowmyancs"дойде доста бързо: “SharePoint 2010 Търсене: не показват никакви резултати за анонимни потребители?”  Блог запис се описва проблема от извън на полето перспектива ключова дума за търсене, но поведението е подобен на мини – тя работи за удостоверени потребители, както и за анонимни потребители, но анонимните потребители няма резултати. 

Аз следват инструкциите и взрив!  Тя решени ми проблем.  Аз не съм сигурен, какво странични ефекти, това ще има и те могат да се окажат проблем, но в краткосрочен план резултат е полезен.

Щракнете върху през блога:

image

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery и свойството HiddenConstraints

Съм правил малко работа с KeywordQuery обект в SharePoint 2010 и използване на HiddenConstraints имоти.

Аз не намирам никаква незабавно полезна информация за това свойство, така си мислех, че бързо ще нахвърлям как аз бях го използва.

Доколкото мога да кажа, Това е автоматичен ограничение, добавени към заявката, така че можете да сортирате парк го там и не се тревожи за това.  Като такива, Това е просто друга дума (или набор от ключови думи) и модификатори, които можете да въведете в потребителския интерфейс, когато направите търсене по ключова дума.  Ето един пример:

keywordQuery.HiddenConstraints = "обхват:\"Industry" ";

Можете да добавите допълнителни ограничения с пространство разделител.

keywordQuery.HiddenConstraints = "обхват:\"Industry" защита";

По-горе се казва на английски език, "изпълни заявка ключова дума, търсене за"отбрана"и освен това, Използвайте категорията "Индустрия".

Ето още един начин на възприемане на това:

image

Аз бях го използва да предоставя контекст зависими автоматичен обхват на уеб част.  Когато потребителят щракне върху раздел и щракне върху бутон за търсене, раздела диктува на обхват на търсене.  Тя работи добре досега.

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

Пример: XSLT създаване на HTML Href

Аз съм бил направите малко XSL неща напоследък и, че аз ще поставени заедно проба за моята бъдещи справки и които могат да бъдат от стойността на всички нас XSLT-ers вземане на живот в internets.

Разглежда следните XML:

<Брой на FdcSearchTabsCollection = "2">
  <Етикет на SearchTab = "промишленост" SortOrder = етикет на "00" = "Индустрии" SearchConstraints = "contenttype:Промишленост" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <Етикет на SearchTab = "практики" SortOrder = етикет на "01" = "Практики" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Следните XSL ползвах ще генерира сортирани списък на разделите на hrefs:

<XSL:шаблон за съвпадение = "FdcSearchTabsCollection" XML:космически = "запазите">
   
    <!– "Всички" в раздел –>
    <href = "javascript:ViewTab("Всички")">Виж всички</а>
   
    <!– Всеки отделен раздел –>
    <!– Обхождане на всички раздели и да покаже правилното  връзки. –>
    <XSL:за всеки избор = "SearchTab">
      <XSL:сортиране на select="@SortOrder"/>

      …
      <href = "javascript:ViewTab(‘{@ TabID}’)"><XSL:стойността на select="@Label"/></а>
    </XSL:за всеки>

    <BR /> 
   

   </XSL:шаблон>

Тук е това, което изглежда в SharePoint:

SNAGHTML78aa2cb

 

 

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin