Бясконцая ўкладзенасць <спраў> Тэгі і JQuery

Гэта падобна на такія дзіўныя тэмы, Я не ўпэўнены, што гэта сапраўды варта блог аб, але гэта ніколі не спынілі мяне раней, так што тут мы ідзем ўсмешка

Я працую на праект, дзе я пацягнуўшы некаторыя дадзеныя з пошуку, упакоўкі яго ў XML-паведамленні, а затым, што XML, у канчатковым рахунку ператвараецца ў HTML з дапамогай XSLT.  Там вельмі шмат JQuery ўдзел, 1 біт, які рэалізуе некаторыя функцыянальныя клавішы табуляцыі.  Пры націску на ўкладцы (на самай справе, a <спраў>), JQuery выклікае. Хаваць() а. шоў() на розных дзівы (першапачатковай загрузкі старонкі загружае усё змесціва таму няма зваротнай перадачы ў гэтым выпадку).

Куча гадзін таму, На ўкладцы пераключэння логікі пачаў працаваць нестабільна і не паказаў бы адзін з маіх закладак.  Я ў канчатковым рахунку, адсочвалі яго да таго, што Internet Explorer (па меншай меры) лічылася, што <спраў> тэгі укладзеныя далёка, значна глыбей, чым intended.The панэлі інструментаў распрацоўніка пакажа:

-<DIV ID = "Tab1Content">
  -<спраў>
    -<спраў>
      -<DIV ID = "Tab2Content">
        -<спраў>
           ..............................
                   </спраў>  <-Нарэшце, паказваць яго зачынілі ўсе шляхі сюды!

Так, калі б я зрабіў $("# Tab1Content").хаваць(), Я таксама схаваць Таб2, і я ніколі не мог паказаць Таб2, калі я не паказваюць таксама Таб1.  Я скапіяваць і ўставіць код на ў Visual Studio, і яна паказала ўсё падшэўка спраў у прыгожа, гэтак жа, як яны павінны рабіць, у такім выглядзе:

-<DIV ID = "Tab1Content">
  +<спраў>
  +<спраў>
-<DIV ID = "Tab2Content">
  +<спраў>
  +<спраў>

Я біцца галавой аб сцяну на працягу некаторага часу і заўважылі, што ў самім кодзе HTML быў выклікаюць шмат пустых <спраў> тэгі, накшталт:

<цела>

  <DIV ID = "Tab1Content">

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

  </спраў>

  <DIV ID = "Tab2Content">

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

  </спраў>

</цела>

(Вышэй waaaaaaaaaaaay больш спрошчаны.  Пустыя тэгі DIV, цалкам сапраўдныя. Некаторыя з маіх <спраў> тэгі былі поўныя зместу, але многія больш не было.  Я прыйшоў да ўсведамлення таго, што мая <XSL:для кожнага,> дырэктывы выпраменьваючых кароткая форма тэгі DIV, калі XSL:для кожнага, не "знайсці ніякіх дадзеных.  Я вымушаны HTML каментар у выхадны, як паказана на малюнку:

image

 

Пасля таго як я зрабіў гэта, ўсіх спраў ён выбудаваны прыгожа і мой рахунак пераключэння пачаў працаваць.

Як заўсёды, Спадзяюся, гэта дапаможа камусьці ў цяжкую хвіліну.

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin

Quick Fix: "Імя тыпу змесціва" $ Resources:ReportServerResources … не можа ўтрымліваць … адмысловыя знакі”

Я праводзіў некаторы час ачысткі SharePoint 2010 сайт і адно з пытанняў ачысткі ставіцца да карумпаваным / няправільна ўсталяваны SQL Server Report Services пытанне.  Праблема ўзнікла, калі адзін з маіх калегаў спрабавалі выратаваць сайт у якасці шаблону, а затым стварыць стварыць новы сайт на аснове гэтага шаблону.  Аперацыі захавання працавала нармальна, але калі яна паспрабавала стварыць новы сайт, SharePoint адлюстроўваецца наступнае паведамленне пра памылку:

Памылка

$ Імя тыпу змесціва "рэсурсаў:ReportServerResources,DataSourceContentTypeName;"Не можа ўтрымоўваць: \ / : * ? " # % < > { } | ~ & , двух паслядоўных перыядаў (..), або спецыяльныя сімвалы, такія як укладкі.

Вось вечка экрана:

 

image

Я паглядзеў на тыпы кантэнту на сайце і знайшоў:

image

Гэтыя тыпы кантэнту відавочна нездаровы.

Гэтае пытанне, здаецца, прыдумаць шмат на інтэрнэт і не падобна, каб быць адным кансэнсус аб тым, як яе вырашыць.  Я знайшоў зручную табліцу, адлюстроўваюцца імёны дрэнны тып змесціва добрае імя тыпу змесціва тут: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Я ўручную абнаўляць іх канстанты выглядае так:

image

(BrightStarr ў імя, відавочна, дадаткова, але яно не можа пашкодзіць ўсмешка )

Гэта дазволіла мне стварыць новы шаблон і нічога не зламалі на іншых сайтах, у тым ліку некаторыя рэчы PerformancePoint Server, што зусім розныя групы людзей працавалі.  Я быў тады ў стане стварыць новы сайт на шаблоне.  Поспех!

Я не ўпэўнены, што гэта 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 кінуў адзін з маіх любімых калі-небудзь выключэнняў часу выканання:

"Стваральнік гэтага віна не паказаць прычыну".

Мне асабліва падабаецца сталіца "R" ў Reason.  Гэта гучыць для мяне як. NET эквівалент "У мяне няма рота, і я павінен крычаць."

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin

Handy Спасылка: Па змаўчанні вынікі пошуку з KeywordQuery

Калі вы выклікаеце выкананне() метад KeywordQuery, Вы можаце стварыць ResultTable на аснове ResultType.RelevantResults.  Гэты фрагмент кода ілюструе тое, што я маю на ўвазе:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

У выніку табліца будзе мець наступныя слупкі дадзеных: 

WorkId
Ранг
Назва
Аўтар
Памер
Шлях
Апісанне
Запіс
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
Contentclass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Я, атрыманыя з гэтага спісу SharePoint 2010 навакольнае асяроддзе, Enterprise Edition.  Спадзяюся, гэта будзе зручна, каб нехта ў будучыні.

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin

Адной з прычын: "Не атрымалася атрымаць CAB-файла ў вырашэнні”

Падчас працы над праектам візуальнай вэб-частцы студыі сёння, Я зрабіў нязначныя паўторнага орг некаторых файлаў, якія будуць змешчаныя ў тэчку _layouts як частка працэсу разгортвання. Канкрэтна, Я пераназваў. JS файл з "TypeAhead.js" на "гарачых клавіш(стары).АТ "  Я планую, каб выдаліць яго, як толькі яго пераемнік "TypeAhead.js" аказваецца правільным.  Выглядала гэта так:

image

Гэта адразу ж выклікала праблемы з Visual Studio, калі я паспрабаваў разгарнуць праект:

Error occurred in deployment step ‘Add Solution’: Не атрымалася атрымаць CAB-файла ў вырашэнні.

Атрымліваецца, што вы не павінны змяшчаць дужкі у імёнах файлаў.  Я зняў дужкі і вырашыць праблему.

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin

Тым не менш, больш JQuery–Змена памераў выявы Прыклад

Я атрымаў у спадчыну вэб-частку ад старога пастаўшчыка кліента і мае праблема памеру малюнка.  Фотаздымкі павінны быць 60×50 але па нейкай прычыне, арыгінальны пастаўшчык змушаны іх на 42×42, так што яны выглядаюць раздушаны:

 

Добра малюнка

Bad Image

Вось разметкі (некалькі спрошчаны):

<клас табліцы = 'пашыранай перспектывы ">
  <THEAD>
    <тр>
      <м  шырыня = '100′>3 Аўторак</м>
    </тр>
  </THEAD>

  <TBODY>
    <тр клас = 'прагноз'>
      <TD шырыня = '100′>
        <Вуліца>
          <Ці клас = 'высокі'>Высокі: 72&Вы;F</Li>
          <Ці клас = "нізкі">Нізкі: 44&Вы;F</Li>
          <Ці клас = 'стан'>Сонечны
            <IMG SRC =’
HTTP://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/en/trans/cond007.png’ шырыня = '42’ Вышыня = '42’ Alt =” />
          </Li>
        </Вуліца>
      </TD>
    </тр>

  </TBODY>

</стол>

Звярніце ўвагу, што хоць Шлях да самога малюнку паказвае правільны памер (60×50) першапачатковым прадаўцом прымусілі яго ў 42×42.  Чаму?  Вар'ят.

У любым выпадку, Я хацеў хуткае і лёгкае рашэнне гэтай праблемы, і я звярнуўся да JQuery.  Трук быў, каб знайсці ўсе патрэбныя <IMG> тэгаў.  Я не хачу, каб бадзяцца з любым іншым IMG тэгі (якіх шмат).  Гэта трохі JQuery зрабіў сваю справу:

<script type="text/javascript" SRC ="HTTP://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></сцэнар>

<Сцэнар тып = "тэкст / JavaScript">
     $(дакумент).гатовы(функцыя () {

         $(‘li.condition > IMG ").кожны(функцыя (індэкс, пункт)
           
{
             $(пункт).CSS("width", "60"); 
             $(пункт).CSS("height", "50");
            });
     }); // дакумента нагрузкі
</сцэнар>

Вось кавалак кода знаходзіцца калекцыя <Li> тэгі, клас "стан" і <IMG> дзяцей.  Затым ён праходзіць праз усё гэта.  Працаваў як шарм.

Я мог бы ўпарадкаваць яе, Але я ніколі не быў такі хлопец, UNIX, што вырашыць π да 18 лічбы дакладнасцю, выкарыстоўваючы СЭД і AWK, і я не такі, калі хлопец або JQuery ўсмешка.

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin

Разбор XML з дапамогай LINQ

Вось невялікі прыклад выкарыстання LINQ для разбору некаторых  XML, і атрымаць на салодкае, салодкія атрыбуты ў ім.

Вось XML я хачу, каб разабраць:

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

    <PageLayout name="xyzzy">
      <Ўкладкі>
        <Tab TabOrder="1" TabLabel="x" SharePointContentType="a" AdditionalConstraints="ac1"/>
        <Tab TabOrder="2" TabLabel="y" SharePointContentType="b" AdditionalConstraints="ac2"/>
      </Ўкладкі>
    </PageLayout>

    <PageLayout name="xyzzy2">
      <Ўкладкі>
        <Tab TabOrder="100" TabLabel="x" SharePointContentType="a" AdditionalConstraints="ac1"/>
        <Tab TabOrder="101" TabLabel="y" SharePointContentType="b" AdditionalConstraints="ac2"/>
        <Tab TabOrder="103" TabLabel="z" SharePointContentType="c" AdditionalConstraints="ac3"/>
      </Ўкладкі>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Я хачу стварыць некалькі ўкладак падчас выканання разбору вышэй.  Мой ўкладак залежыць ад макета старонкі.  Калі маё імя макета старонкі з'яўляецца "xyzzy2", то я хачу, каб ўкладкі 100, 101 і 103 (ўкладках <PageLayout імя = "xyzzy2">).

Вось LINQ, што робіць яго:

быў allTabs =
              ад р
                  XElement.Parse(theXmlToParse).
                 
Элементы("PageLayouts").
                  Элементы("PageLayout")
              дзе (p.Attribute("name").Value.Equals("xyzzy2"))
              ад м. p.Elements("Tabs").Элементы("Tab")
              Вылучыце м;

          Results.Text = string.Empty;

          Еогеасп (ATAB была allTabs)
          {
              Results.Text =
                  "Tab Order: " + aTab.Attribute("TabOrder").Значэнне + " |" +
                  "Tab Label: " + 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 = "scope:\"Industry\"";

Вы можаце дадаць дадатковыя абмежаванні з падзельнікам прасторы.

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

Вышэй, кажучы на ​​англійскай мове, "Запусціць запыт ключавога слова шукае« абарона », а тым больш, выкарыстоўваць "Прамысловасць" сферы.

Вось яшчэ адзін спосаб глядзець на гэта:

image

Я выкарыстоўваю яго, каб забяспечыць кантэкстна-залежную аўтаматычнай сферы на карыстацкай вэб-часткі.  Калі карыстач націскае на ўкладцы і націскае кнопку пошуку, Ўкладка дыктуе пэўнай вобласці пошуку.  Гэта працуе добра да гэтага часу.

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin

Прыклад: XSLT Creating HTML Href аўтара

Я раблю мала матэрыялу XSL ў апошні час і думаў, што я сабраў ўзоры для маёй будучыні, і гэта можа быць карысным для ўсіх нас XSLT-ERS зарабляць на жыццё ў Інтэрнэце.

Разгледзім наступны XML:

<FdcSearchTabsCollection Count="2">
  <SearchTab Label="Industry" SortOrder=”00” Label=”Industries” SearchConstraints="contenttype:Прамысловасць" TabID="831b2a74-98c4-4453-8061-86e2fdb22c63"/>
  <SearchTab Label="Practices" SortOrder=”01” Label=”Practices” SearchConstraints="contenttype:PracticeGroups" TabID="678e206b-6996-421f-9765-b0558fe1a9c0"/>
</FdcSearchTabsCollection>

Наступны фрагмент XSL выводзіць спарадкаваны спіс ўкладак HREFs:

<XSL:template match="FdcSearchTabsCollection" XML:space="preserve">
   
    <!– The "all" таб –>
    <a href="javascript:ПросмотрВкладка(‘All’)">Прагледзець усе</a>
   
    <!– Кожная асобная ўкладка –>
    <!– Перабор Ўкладкі і правільнага адлюстравання  сувязі. –>
    <XSL:for-each select="SearchTab">
      <XSL:sort select="@SortOrder"/>

      …
      <a href="javascript:ПросмотрВкладка("{@ Табетический}')"><XSL:value-of select="@Label"/></a>
    </XSL:для кожнага,>

    <BR /> 
   

   </XSL:шаблон>

Вось як гэта выглядае ў SharePoint:

SNAGHTML78aa2cb

 

 

</канец>

Падпісацца на мой блог.

Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin