Штомесячны архіў: Снежань 2007

Мой сын узламаны Gamespot

Так, сёння раніцай, Мой сын вырашыў ўбачыць ўзроставыя абмежаванні трынаццаць Halo 3 відэа пры Gamespot. I’m outside shoveling snow, so I’m not there to help or hinder. Necessity is the mother of invention and all that … he has a eureka! moment. He realizes that even though Gamespot wants him to enter his рэальны Дата нараджэння, на самай справе ён можа ўвесці любы birth date he wants. Once he realized that, ён прымусіў сябе дастаткова дарослым, каб убачыць відэа.

I’m not quite sure how I feel about this 🙂

Нядзеля Смешныя: “Гэта пячатка смецця”

На сваю першую працу з каледжа ў 1991, Мне пашчасціла працаваць у вытворчай кампаніі з 13 месцаў, not including its corporate HQ in New Jersey. I joined just when the company was rolling out a new ERP system. We were a small IT department of about ten people altogether, two of whom Did Not Travel. Part of the project involved replacing IBM System 36 boxes with HP hardware and HPUX. Everyone used green tubes to access the system.

Праект коціцца, і я паслаў ўніз ў Балтымор з новым супрацоўнікам, Джэф. Our job was to power up the Unix box, Пераканайцеся, што O / S бег, Ўстаноўка сістэмы ERP, наладзе ERP, train people on the ERP and do custom work for folks on the spot. (Гэта была праца маёй мары, Асабліва ідзе прама з каледжа). Before we could really get off the ground, нам трэба распакаваць ўсе зялёныя трубы, put them on desks and wire them. And the best part was that we had to put the RJ11 connectors on ourselves.

Па некаторых прычынах, якія я ніколі не разумеў, а на самай справе ніколі не думаў, каб спытаць а ў той час,, У нас былі некаторыя падраднай арганізацыяй, прыйсці і працаваць кабеля па ўсім расліне, but we didn’t have them put on the connectors. Так, было "патч акне" з дзесяткамі немеченых кабеляў у "кампутарным кабінеце" і гэтыя круціўся вакол будынка ў розных месцах у будынку.

Мы праклалі сабе шлях праз яго на працягу выходных, тэставанне кожнага правады, пакласці на раздыме (пераканаўшыся, што ён быў прама супраць. Скрыжаваныя), забеспячэнне трохі налады на зялёнай трубкі і друкаркі былі правільнымі, labeling wires, пераканаўшыся, што "Геці" was running correctly for each port and probably a thousand other things that I’ve suppressed since then. It all came together quite nicely.

Але, there was one important cable that we couldn’t figure out. The plant in Baltimore had a relationship with a warehousing location in New Jersey. Some orders placed in Baltimore shipped out of that location. There were two wires that we had to connect to the HPUX box: a green tube and a printer. The green tube was easy, але прынтэр ператварыліся ў тры тыдні кашмару.

Калі вы не ведаеце, або падушаныя яго, справу з зялёнай трубкі і друкаркі Такім чынам,, there are various options that you deal with by setting various pins. 8-біт, 7-біт, цотнасць (цотныя / няцотныя / няма), probably others. If you get one of those settings wrong, трубы або прынтэр па-ранейшаму паказвае рэчы, але гэта будзе агульны трызненне, or it will be gibberish with a lot of recognizable stuff in between. Вядома, these pins are hard to see and have to be set by using a small flat-edge screw driver. And they are never standard.

Мы стварылі першы з многіх хуткага выкліку з хлопцам Нью-Джэрсі (Сівы ненавіснік кампутар, які, верагодна праклёны нас па гэты дзень). We got the green tube working pretty quickly, but we couldn’t get the printer to work. It kept "printing garbage". We would create a new RJ11 connector, switching between crossed and straight. We would delete the port and re-created in Unix. We went through the arduous task of having him explain to us the pin configuration on the printer, ніколі не ўпэўнены, што калі ён робіць гэта правільна.

Час ісці жыць, усё ў Балтыморы кіпіць, Але мы не можам атрымаць праклятыя друкаркі ў Нью-Джэрсі працаваць! We’ve exhausted all possibilities except for driving back up to NJ to work on the printer in person. To avoid all that driving, мы, нарэшце, папытаеце яго нам па факсе, што ён атрымлівае, калі гэта "смецце", спадзеючыся, што, можа быць, там будуць нейкія падказкі ў тым, што смецце, які скажа нам, што мы робім няправільна.

Калі мы атрымалі факс, we immediately knew what was wrong. Паглядзець, наш метад тэставання мы наладзілі прынтэр правільна было выдаваць "LP" Каманда, як гэта:

LP / і г.д. / пароль

У асноўным, we printed out the unix password file. It’s always present and out of the box, always just one page. You standard Unix password file looks something like this:

каваль:*:100:100:8A-74(офіс):/Галоўная / каваль:/USR / бен / ш
:*:200:0::/Галоўная / госць:/usr/bin/sh  

We had been printing out the password file over and over again for several weeks and it was printing correctly. Аднак, для канчатковых карыстальнікаў, яна была "друк смецця".

</канец>

Яшчэ адзін Сеткавыя ўліковыя дадзеныя Multi-выклік выпуск і рашэнні

Мой кліент нядаўна ўсталявалі прылада ад магіі Ядловец якія, відавочна, замяніць свае старыя сеткі Cisco балансавання нагрузкі (NLB). At about the same time, мы ўсталявалі выпраўленне для вырашэння праблемы працоўных працэсаў.

Праз дзень ці два пазней, мы заўважылі праблемы, калі мы звярталіся агульных службаў (SSP). We could get to it, but we would be challenged for a user ID and password many times on each page. This didn’t happen with the main portal app, nor central administration. Naturally, мы не ведалі, які з двух (Juniper або выпраўленне) будзе пытанне, хоць я моцна падазраваў выпраўленне, мяркуючы, што мы не ўсталявалі зусім правільна.

It turned out that Juniper had some kind of compression setting. Адзін з мантыях лічбы over in the network group turned that setting off. That solved our problem.

This is not the first time that compression has been the root cause of a SharePoint problem for me. IIS compression adversely affected a 3rd party tool from the good people at The Dot Net Factory for IE 6 браўзэраў (IE 7 браўзэры працавалі без працы).

Так, add "compression" небяспекам спіс.

</канец>

Крэдыт: http://www.elfwood.com/art/s/h/sherry/death_colour.jpg.html

Задумляецеся аб змене платформы блогаў

I started off my "blogging career" using Microsoft’s platform and it’s been good to me. It’s easy to post, there are good options and widgets for managing your "space", годнай захоўвання вэб і г.д..

Аднак, I really just fell into the MS solution with almost no planning. That alone calls for me to evaluate where I am and where I’m going, in terms of a blogging platform. There are also two important limitations that bother me right now vis-à-vis Windows Live Spaces.

Першы, I can’t get very good statistics. There are stats but the detail is often truncated and not presented in a way that allows for any kind of analysis. There no sorting or export capability. I get many blog ideas based on the kind of information people find (або асабліва не знайсці) when they search my blog. It’s very hard to use lives spaces for that.

Другі, there does not seem to be any mechanism to "monetize" a windows live space blog. На самай справе, для таго, каб пазбавіцца ад аб'яваў MS (, Ад якога я не дае ніякіх выгод), I need to actually pay Microsoft. (Па крайняй меры, вось як я разумею; Я быў не ў стане атрымаць канчатковыя адказы на гэтае і пытанні, падобныя да гэтага).

Цяпер, калі я атрымаў па ўстаноўленым узоры, і набор звычак блогаў, I want to evaluate other options. I’ve done some research and there are a lot of choices, але мне цікава, што іншыя людзі, Асабліва іншымі членамі супольнасці SharePoint (як блогеры або чытачоў), like to use.

Калі гэтая тэма вас цікавіць, і ў Вас ёсць меркаванне або гатовыя падзяліцца сваім вопытам, калі ласка, пакіньце каментар або напішыце мне наўпрост.

Дзякуй!

<канец />

Technorati Тэгі:

SharePoint Designer Email Пасылае ???? У электроннай пошце

Форум карыстальнікаў часам просяць: Чаму SharePoint Designer пакласці ???? у маёй электроннай пошце, а не ад значэння поля?

Адна з прычын, гэта адбываецца таму, што зменнай, на якую вы спасылаецеся з'яўляецца нулявым.

This can happen because you are trying to reference a field from the "current item" але карыстальнік не прыходзіла, што значэнне ў поле формы.

<канец />

Параўнаць / Тэставанне для пустых дат у канструктар рабочых працэсаў SharePoint

Сцэнар: У канструктару рабочых працэсаў SharePoint, you need to determine if a date field is blank.

Праблема: SPD does not provide a direct method for comparing dates to anything other than a date. You cannot create a condition like this: "If [Поле даты] equals blank".

Рашэнне: Convert the date to a string. Use string comparison to determine if the date is blank.

Screen Shots:

The following screen shots show how to do this. У гэтым выпадку, a field on an item, "Environmental Permits:First Permit Reminder Date", is submitted and the workflow fires in response.

малюнак

малюнак

Заўвагі:

When I tried this, I was pleasantly surprised to learn that it works. I was worried that SharePoint Designer might disallow the string assignment (Пераменная:StringReminderDateDate) but it did allow it.

I was also concerned that allowing it, the value might be null and either blow up the WF at runtime or maybe raise the global temperature 1/2 a degree, but those concerns were unfounded.

</канец>

Бар па-ранейшаму даволі высокі для пашырэння MOSS

Сёння, I was working with a client and describing how to modify the content query web part and display additional bits of information from a content type.

"First, наладзе CQWP для падлучэння да сваіх крыніц дадзеных, то вы экспартаваць яго на працоўную станцыю, змяняць <CommonViewFields>, загружаць, remove the original and now it’s ‘primed’ to display those other columns. Наступны, адкрыць SharePoint Designer, navigate to the site collection root and locate ItemStyle.xsl. Copy one of the templates as a useful starting point. Go back and modify the CQWP to make use of this new template. У рэшце рэшт, змяніць шаблон, каб зрабіць ваша новых радовішчаў! (Не забудзьцеся праверыць яго яшчэ ў так, каб іншыя карыстальнікі могуць бачыць вынікі)."

Гэта ўсё цалкам зразумела для мяне (і большасць з нас SharePoint распрацоўшчык ўводзіць) , Што адбываецца і як гэта даволі добра, на самай справе, that the data retrieval aspects of the CQWP are so well-separate from the data presentation aspects. Але, гэта не так лёгка растлумачыць, гэта?

<канец />

Адлюстраванне вынікаў запытаў Змесціва вэб-частку ў сетцы / Стол

Агляд і мэты

З скрынкі, MOSS’ Запыт змесціва вэб-часткі (CQWP) паказвае іх у выглядзе спісу, similar to search results. It is also possible to display the results in a grid format (I.E. HTML фармаце табліцы). Grid formats are better in some circumstances. I describe how to achieve that effect in this article.

Бізнес-сцэнар

I have worked with a client on an enterprise-wide MOSS rollout. We have designed their taxonomy such that projects are first class citizens in the hierarchy and have their own top level site. Project managers maintain a singleton list of project summary information, такія як назва, бюджэт, Чаканая дата завяршэння, remaining budget and other summary type fields. By "singleton" I mean a custom SharePoint list guaranteed to contain only one item. Simplistically, гэта выглядае так:

малюнак

Тэхнічны падыход з'яўляецца амаль такім жа, як апісана тут (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). The CQWP uses an XSL transform to emit HTML for the browser to render.

I always envision the result before diving into the XSL because XSL is a nightmare. Here’s my desired result:

малюнак

HTML, як гэта спараджае, што вынік:

<HTML>
 <цела>
 <цэнтр>
 <стол мяжа= 1>

<!-- Этыкетка ->
 <тр BGCOLOR= Сіні>
 <TD><шрыфт колер= Белы><B>Назва праекта</B></шрыфт></TD>
 <TD выраўнаваць= Правы><шрыфт колер= Белы><B>Поўная дата</B></шрыфт></TD>
 <TD выраўнаваць= Правы><шрыфт колер= Белы><B>Бюджэт</B></шрыфт></TD>
 <TD выраўнаваць= Правы><шрыфт колер= Белы><B>Фактычны расход</B></шрыфт></TD>
 <TD><шрыфт колер= Белы><B>Агульны стан</B></шрыфт></TD>
 </тр>

<тр>
 <TD>Re-правадной кампутарная зала.</TD>
 <TD выраўнаваць= Правы>02/01/08</TD>
 <TD выраўнаваць= Правы>22,500.00</TD>
 <TD выраўнаваць= Правы>19,000.00</TD>
 <TD>In Progress</TD>
 </тр>

<тр>
 <TD>Прадастаўленне сервераў для абнаўлення SQL</TD>
 <TD выраўнаваць= Правы>04/01/08</TD>
 <TD выраўнаваць= Правы>7,500.00</TD>
 <TD выраўнаваць= Правы>0.00</TD>
 <TD>Запланаваны</TD>
 </тр>

</стол>
 </цэнтр>
 </цела>
</HTML>

Падыход

Выканайце наступныя крокі для стварэння сеткі:

  1. Апісанне кампанентаў сеткі (радкоў / слупкоў).
  2. Вызначыць і стварыць неабходныя слупкі сайта.
  3. Стварэнне сайтаў для суб праектаў і Сінглтан спісы.
  4. Дадаць CQWP на вэб-старонку і наладзіць яго для пошуку вашых спісаў.
  5. Змяніць XML CQWP да сабраць дадатковыя слупкі.
  6. Змяніць XSL для стварэння табліцы.

I’m going to concentrate on number six. Numbers one through four are straight-forward and something that any CQWP user has already done. Number five has been well-documented by others including this exhaustive screen-shot laden article from MSDN тут (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) і блог Хізэр Саламона тут (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Азы

Пачаць і ажыццяўляць крокі з першага па пяты ў адпаведнасці з MSDN дакументацыя і артыкулы Хізэр Саламона.

У гэты момант, вы дадалі CQWP на старонку, і ў вас ёсць <CommonViewFields> сканфігураваны як неабходныя.

Пасля звычайных крокаў, Я атрымліваю гэтыя прамежкавыя вынікі:

1. Стварыць тып кантэнту, a templatized custom list for that content type and two sites. Here is the content type:

малюнак

Вось структура сайта:

малюнак

2. Дадаць CQWP пасля стварэння майго праекта даччыных сайтаў і спісаў Сінглтан рэзюмэ праекта:

малюнак

3. Дадаць усю дадатковую інфармацыю, я хачу праз <CommonViewFields>:

        <ўласнасць імя="CommonViewFields" тып="радок">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</ўласнасць>

Звярніце ўвагу, што я павінен быў трымаць усе палі нерухомасці на адной лініі або яна не будзе працаваць (CQWP скажа мне, што запыт не вярнуў няма тавараў).

4. У гэты момант, we’re ready to move beyond the MSDN article and flip on over to Heather Solomon’s article. Follow her steps starting near step #5 для стварэння карыстацкага / unghosted version of ItemStyle.xsl. I follow Heather’s advice, праз крок 11 і атрымаць гэтыя прамежкавыя вынікі:

4.1: Маё імя XSL шаблон наступным:

<XSL:template name="Grid" match="Row[@Style=’Grid’]" mode="itemstyle">

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

    <XSL:для кожнага, выбіраць="@ *">
      P:<XSL:коштам ад выбіраць="імя()" /><бр/>
    </XSL:для кожнага,>

4.2: Я змяніць вэб-частка, go to appearance and select my "Grid" стыль:

малюнак

Ужыць змены і вось вынік:

малюнак

Як відаць са сказанага вышэй, мы хочам палёў (Назва праекта, расход, статус, і г.д.) are available for us to use when we emit the HTML. Not only that, but we see the names by which we must reference those columns in the XSL. Напрыклад, we reference Project Status as "Project_x005F_x0020_Name".

У гэты момант, мы сыйдзем з блога Хізэр і з плячэй гэтых гігантаў, Я дадаць уласныя трохі.

ContentQueryMain.xsl

УВАГА: Пры унясенні змяненняў у абодвух ContentQueryMain.xsl а таксама ItemStyle.xsl, Вы павінны праверыць гэтыя файлы назад у перш чым вы бачыце ўплыў змены.

Для сеткавых рашэнняў мэтаў, MOSS uses two different XSL files to produce the results we see from a CQWP. To generate the previous bit of output, we modified ItemStyle.xsl. MOSS actually uses another XSL file, ContentQueryMain.xsl to in conjunction with ItemStyle.xsl to generate its HTML. As its name implies, ContentQueryMain.xsl is the "main" XSL that controls the overall flow of translation. It iterates through all the found items and passes them one by one to templates in ItemStyle.xsl. We’ll modify ItemStyle.xsl to generate the open <стол> Тэг да спрацоўвання першага радка дадзеных і закрыццё <стол> tag after emitting the last row. To accomplish this, ContentQueryMain.xsl is modified to pass two parameters to our "grid" Шаблон ў ItemStyle.xsl, "last row" and "current row". ItemStyle.xsl uses these to conditionally emit the necessary tags.

Выкарыстоўваючы тэхніку Хізэр Саламона, we locate ContentQueryMain.xsl. It is located in the same place as ItemStyle.xsl. This screen shot should help:

малюнак

Нам трэба ўнесці наступныя змены:

  • Змяніць шаблон XSL, "CallItemTemplate" that actually invokes our Grid template in ItemStyle.xsl. We will pass two parameters to the Grid template so that it will have the data it needs to conditionally generate opening and closing <стол> тэгі.
  • Modify another bit of ContentQueryMain.xsl that calls the "CallItemTemplate" to pass it a "LastRow" параметр так, LASTROW можа быць перададзены на нашай сетцы пра шаблон.

Locate the template named "OuterTemplate.CallItemTemplate" ідэнтыфікуецца радком:

  <XSL:шаблон імя="OuterTemplate.CallItemTemplate">

Замяніць ўвесь шаблон наступным:

  <XSL:шаблон імя="OuterTemplate.CallItemTemplate">
    <XSL:параметраў імя="CurPosition" />

    <!--
      Add the "LastRow" параметр.
      We only use it when the item style pass in is "Grid".
    -->
    <XSL:параметраў імя="LASTROW" />

    <XSL:выбіраць>
      <XSL:калі тэст="@ Стыль = 'NewsRollUpItem'">
        <XSL:Apply-шаблоны выбіраць="." рэжым="ItemStyle">
          <XSL:з параметрам- імя="EditMode" выбіраць="$cbq_iseditmode" />
        </XSL:Apply-шаблоны>
      </XSL:калі>
      <XSL:калі тэст="@ Стыль = 'NewsBigItem'">
        <XSL:Apply-шаблоны выбіраць="." рэжым="ItemStyle">
          <XSL:з параметрам- імя="CurPos" выбіраць="$CurPosition" />
        </XSL:Apply-шаблоны>
      </XSL:калі>
      <XSL:калі тэст="@ Стыль = 'NewsCategoryItem'">
        <XSL:Apply-шаблоны выбіраць="." рэжым="ItemStyle">
          <XSL:з параметрам- імя="CurPos" выбіраць="$CurPosition" />
        </XSL:Apply-шаблоны>
      </XSL:калі>

      <!--
              Перадаць бягучае становішча і LASTROW ў шаблон ItemStyle.xsl Сетка.
              ItemStyle.xsl будзе выкарыстоўваць гэта, каб выпраменьваць адкрытыя і закрыццё <стол> тэгі.
      -->
      <XSL:калі тэст="Стыль @ = "Сетка"">
        <XSL:Apply-шаблоны выбіраць="." рэжым="ItemStyle">
          <XSL:з параметрам- імя="CurPos" выбіраць="$CurPosition" />
          <XSL:з параметрам- імя="Апошні" выбіраць="$LASTROW" />
        </XSL:Apply-шаблоны>
      </XSL:калі>

      <XSL:у адваротным выпадку>
        <XSL:Apply-шаблоны выбіраць="." рэжым="ItemStyle">
        </XSL:Apply-шаблоны>
      </XSL:у адваротным выпадку>
    </XSL:выбіраць>
  </XSL:шаблон>

Каментары апісваюць мэта змяненняў.

Вядома, the "OuterTemplate.CallItemTemplate" is itself called from another template. Locate that template by searching for this text string:

<XSL:шаблон імя="OuterTemplate.Body">

Праглядзіце інструкцыі ў OuterTemplate.Body і ўстаўце параметр LASTROW наступным (паказана як каментар курсівам):

<XSL:выклік-шаблону імя="OuterTemplate.CallItemTemplate">
  <XSL:з параметрам- імя="CurPosition" выбіраць="$CurPosition" />
  <!-- Устаўце параметр LASTROW. -->
  <XSL:з параметрам- імя="LASTROW" выбіраць="$LASTROW"/>
</XSL:выклік-шаблону>

Пасля ўсяго гэтага, мы, нарэшце, рэчы створаны належным чынам, каб нашы ItemStyle.xsl можа выпраменьваць <стол> тэгаў у патрэбным месцы.

ItemStyle.xsl

УВАГА: Зноў, рэгістрацыя ItemStyle.xsl пасля ўнясення змяненняў, так што вы ўбачыць эфект ад гэтых змен.

У нас ёсць дзве задачы тут:

  • Replace the entire Grid template. You can copy/paste from below.
  • Add some mumbo jumbo outside the template definition that enables "formatcurrency" template to work. (Вы можаце сказаць, што я маюць слабую ручку на XSL).

Першы, у верхняй частцы ItemStyle.xsl, дадайце гэты радок:

  <!-- Некаторыя фетыш, які дазваляе нам прадстаўляць U.S. валюта. -->
  <XSL:дзесятковы фармат імя="персанал" лічба="Рэ" />

  <XSL:шаблон імя="Змаўчанне" супадаць="*" рэжым="ItemStyle">

Звярніце ўвагу, што я дадаў яго непасрэдна перад <XSL:template name="Default" …> вызначэнне.

Наступны, go back to our Grid template. Replace the entire Grid template with the code below. It is thoroughly commented, але, не саромейцеся, пішыце мне ці пакінуць каментары ў блогу, калі ў вас ёсць пытанні.

  <XSL:шаблон імя="Сетка" супадаць="Радок[Стыль @ = "Сетка"]" рэжым="ItemStyle">

    <!--
      ContentMain.xsl праходзіць CurPos і апошні.
      Мы выкарыстоўваем гэтыя умоўна вылучаюць адкрытыя і закрыццё <стол> тэгі.
    -->
    <XSL:параметраў імя="CurPos" />
    <XSL:параметраў імя="Апошні" />

    <!-- Наступныя зменныя не змяняюцца ад стандартнага ItemStyle.xsl -->
    <XSL:пераменная імя="SafeImageUrl">
      <XSL:выклік-шаблону імя="OuterTemplate.GetSafeStaticUrl">
        <XSL:з параметрам- імя="UrlColumnName" выбіраць="'ImageUrl'"/>
      </XSL:выклік-шаблону>
    </XSL:пераменная>
    <XSL:пераменная імя="SafeLinkUrl">
      <XSL:выклік-шаблону імя="OuterTemplate.GetSafeLink">
        <XSL:з параметрам- імя="UrlColumnName" выбіраць="'LinkUrl'"/>
      </XSL:выклік-шаблону>
    </XSL:пераменная>
    <XSL:пераменная імя="DisplayTitle">
      <XSL:выклік-шаблону імя="OuterTemplate.GetTitle">
        <XSL:з параметрам- імя="Назва" выбіраць="@ Title"/>
        <XSL:з параметрам- імя="UrlColumnName" выбіраць="'LinkUrl'"/>
      </XSL:выклік-шаблону>
    </XSL:пераменная>
    <XSL:пераменная імя="LinkTarget">
      <XSL:калі тэст="@ OpenInNewWindow = 'True'" >_blank</XSL:калі>
    </XSL:пераменная>

    <!--
      Тут мы вызначаем зменную, "tableStart".  Гэты дакумент утрымлівае HTML
      .  Заўважым, што калі CurPos = 1, ён уключае ў сябе HTML ў тэгу CDATA.
      У адваротным выпадку, гэта будзе пустой.

      Значэнне tableStart з'яўляецца emited кожны раз ItemStyle выклікаецца праз
      .
    -->
    <XSL:пераменная імя="tableStart">
      <XSL:калі тэст="$CurPos = 1">
        <![CDATA[
        <мяжы табліцы = 1>
          <tr bgcolor="blue">
            <TD><font color="white"><B>Назва праекта</B></шрыфт></TD>
            <td align="right"><font color="white"><B>Поўная дата</B></шрыфт></TD>
            <td align="right"><font color="white"><B>Бюджэт</B></шрыфт></TD>
            <td align="right"><font color="white"><B>Фактычны расход</B></шрыфт></TD>
            <TD><font color="white"><B>Агульны стан</B></шрыфт></TD>
          </тр>
        ]]>
      </XSL:калі>
    </XSL:пераменная>

    <!--
      Іншая пераменная, tableEnd проста вызначае зачыняе тэг табліцы.

      Як і tableStart, гэта заўсёды emited.  Менавіта таму яго значэнне
      .
    -->
    <XSL:пераменная імя="tableEnd">
      <XSL:калі тэст="$CurPos = $ Апошняя">
        <![CDATA[ </стол> ]]>
      </XSL:калі>
    </XSL:пераменная>

    <!--
      Заўсёды выпраменьваць ўтрыманне tableStart.  Калі гэта не першы
      , то мы ведаем, яго значэнне
      .

      Забараніць маскіраванне tableStart таму што, калі ён не пусты, гэта
      .  Калі
      , it will generate
      stuff like "&л;стол&GT;" instead of "<стол>".
    -->
    <XSL:коштам ад выбіраць="$tableStart" адключыць-выхад-ўцёкі="ды"/>


    <тр>
      <!--
      P:Project_x005F_x0020_Name
      :Project_x005F_x0020_End_x005F_x0020_Date
      :Project_x005F_x0020_Budget
      :Project_x005F_x0020_Expenses
      :Project_x005F_x0020_Status
      -->
      <TD>
        <XSL:коштам ад выбіраць="@ Project_x005F_x0020_Name"/>
      </TD>

      <TD выраўнаваць="права">
        <XSL:коштам ад выбіраць="@ Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD выраўнаваць="права">
        <XSL:выклік-шаблону імя="FormatCurrency">
          <XSL:з параметрам- імя="значэнне" 
выбіраць="@ Project_x005F_x0020_Budget"></XSL:з параметрам-> </XSL:выклік-шаблону> </TD> <TD выраўнаваць="права"> <XSL:выклік-шаблону імя="FormatCurrency"> <XSL:з параметрам- імя="значэнне" выбіраць="@ Project_x005F_x0020_Expenses">
</XSL:з параметрам-> </XSL:выклік-шаблону> </TD> <TD> <XSL:коштам ад выбіраць="@ Project_x005F_x0020_Status"/> </TD> <!-- Усе наступныя закаментаваўшы ўдакладніць рэчы. Аднак, вярнуць яго і запіхваць яго ў <TD> каб убачыць яго         . --> <!-- <div id="linkitem" class="item"> <XSL:if test="string-length($SafeImageUrl) != 0"> <div class="image-area-left"> <a href="{$SafeLinkUrl}" target="{$LinkTarget}"> <img class="image-fixed-width" src="{$SafeImageUrl}"
alt="{@ ImageUrlAltText}"/> </a> </спраў> </XSL:калі> <div class="link-item"> <XSL:выклік-шаблону
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a href="{$SafeLinkUrl}"
target="{$LinkTarget}" title="{@ LinkToolTip}"> <XSL:value-of select="$DisplayTitle"/> </a> <div class="description"> <XSL:value-of select="@Description" /> </спраў> </спраў> </спраў>
--> </тр> <!-- Выпраменьваюць зачыняе тэг табліцы. Калі мы не на апошнім шэрагу, гэта будзе пустой. --> <XSL:коштам ад выбіраць="$tableEnd" адключыць-выхад-ўцёкі="ды"/> </XSL:шаблон> <XSL:шаблон імя="FormatCurrency"> <XSL:параметраў імя="значэнне" выбіраць="0" /> <XSL:коштам ад выбіраць="Format-лік($значэнне, "$DDD,DDD,DDD.DD", "staff")" /> </XSL:шаблон>

Стандартны WSS / MOSS экранаў ўводу дадзеных не падтрымліваюць каскадныя выпадаючых (ці іншай ўнутры ад зносін)

АБНАЎЛЕННЕ (04/2008): Гэты вялікі запіс у блогу паказвае добрую JavaScript падыходу да вырашэння гэтай праблемы: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

UPDATE II: (04/2008): Гэтая запіс у блогу выглядае шматспадзеўна, а: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Некалькі разоў на тыдзень, калі не штодня, forum users describe a requirement that would normally be met via cascading drop-downs. Напрыклад, У мяне ёсць два выпадаючых кіравання:

  • Спіс U.S. дзяржаў
  • Спіс U.S. гарадоў.

Як адказныя пастаўшчыкоў UI, мы хочам, каб працаваць, як гэта:

  • Павел выбірае U.S. state from the drop-down.
  • This causes the cities drop-down to filter only those cities that belong to the selected state.
  • Павел выбірае горад з гэтага адфільтраваным спіс.

There is no out-of-the-box support for this feature. На самай справе, there is no OOB support for any kind of direct intra-form communication. This includes programmatically hiding/enabling/disabling fields in response to field changes elsewhere on the form.

Рэальная мэта гэтага артыкула, каб апісаць магчымыя рашэнні і гэтыя варыянты, як я іх ведаю:

  1. Develop a custom column type. As a custom-column-developer, you have full control over the "world" of that custom column. You can implement a cascading drop-down that way.
  2. Consider using workflow. In some cases, you want to automatically assign a value to field based on another field’s value. У гэтым выпадку, Вы звычайна спрабуюць выкарыстоўваць вылічаецца слупок, але некалькі разоў, it just won’t get the job done. SharePoint Designer workflow is a relatively administer-friendly alternative to dropping down into code and visual studio. If you go this route, быць у курсе пытанняў, якія разглядаюцца на гэтая артыкул (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Апрацоўшчыкі падзей: Як і працоўны працэс, this is an after-the-fact solution. Your event handler is a .NET assembly (C #, VB.NET) to which SharePoint passes control. The object you develop has access to the data of the list (і ўся аб'ектная мадэль) і можа зрабіць усе неабходныя разлікі.
  4. Use SharePoint Designer to create custom entry forms. I don’t have direct experience with this approach, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Roll Your Own ASP.NET функцыі ўводу дадзеных (ў выглядзе асобнага вэб-старонцы або ў якасці вэб-часткі) і выкарыстоўваць яго замест.

Калі хто ведае іншыя і / або лепшыя варыянты, калі ласка, напішыце каментар, і я буду абнаўляць цела гэтага паста.

<канец />

Technorati Тэгі:

Yes/No (Сцяжок) фільтраванне ў змястоўнай частцы вэб-запыту

To filter for a query for the Yes/No check box entitled "PG Milestone", наладзіць CQWP як гэта:

малюнак

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

Першы Вынік пошуку I find using the search term "filter yes/no content query web part" плоскі з няправільнага, так што я думаў, што я б паставіў гэтаму там і паглядзець, ці зможа ён замяніць няправільны вынік ў тыповых выніках пошуку.

Гэта даволі проста: True values = "1" and false values do not equal "1" (Даволі рэтра, на самай справе).

У прыведзеным вышэй прыкладзе, I created site column of type "Yes/No (сцяжок)" named "PG Milestone". I added it to a doc library, загружана некалькі дакументаў, ўсталяваць значэнне для пары, і правяраў.

<канец />