Arkivji ta 'Kull Xahar: Diċembru 2007

Ibni Hacked Gamespot

Allura, dalgħodu, tifel tiegħi huwa determinat li tara Halo ristretta età tlettax 3 video fuq 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 reali data tat-twelid, huwa jista 'effettivament jidħol kwalunkwe birth date he wants. Once he realized that, huwa għamel lilu nnifsu qodma biżżejjed biex tara l-video.

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

IL-ĦADD Funny: “Huwa Stampar Żibel”

Fl-ewwel xogħol tiegħi mill-kulleġġ fl 1991, I kien xxurtjati li taħdem għal kumpanija tal-manifattura ma 13 postijiet, 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.

The project rolls along and I’m sent down to Baltimore with a new co-worker, Jeff. Our job was to power up the Unix box, make sure the O/S was running, install the ERP system, configure the ERP, train people on the ERP and do custom work for folks on the spot. (This was a dream job, especially coming straight out of college). Before we could really get off the ground, we needed to unpack all the green tubes, put them on desks and wire them. And the best part was that we had to put the RJ11 connectors on ourselves.

For some reason that I never understood and actually never thought to ask about at the time, we had had some contracting company come along and run cable throughout the plant, but we didn’t have them put on the connectors. Allura, there was a "patch box" with dozens of of unlabeled cables in the "computer room" and these snaked around the building to various places in the building.

We worked our way through it over the course of a weekend, testing each wire, putting on a connector (making sure it was straight vs. crossed), ensuring the bit settings on the green tubes and printers were correct, labeling wires, making sure that "getty" was running correctly for each port and probably a thousand other things that I’ve suppressed since then. It all came together quite nicely.

Iżda, 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, but the printer turned into a three-week nightmare.

If you don’t know it, or have suppressed it, dealing with green tubes and printers this way, there are various options that you deal with by setting various pins. 8-bit, 7-bit, parity (even/odd/none), probably others. If you get one of those settings wrong, the tube or printer still shows stuff, but it will be total gibberish, or it will be gibberish with a lot of recognizable stuff in between. Of course, 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 set up the first of many quick calls with the NJ guy (a grizzled computer hater who probably curses us to this day). 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, never really sure if he was doing it correctly.

It’s about time to go live, everything in Baltimore is humming, but we can’t get the cursed printer up in NJ to work! 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 finally ask him to fax us what he’s getting when it’s "garbage", hoping that maybe there will be some clue in that garbage that will tell us what we’re doing wrong.

When we got the fax, we immediately knew what was wrong. Ara, our method of testing whether we had configured a printer correctly was to issue an "lp" command like this:

lp /etc/passwd

Bażikament, 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:

smith:*:100:100:8A-74(uffiċċju):/home/smith:/usr/bin/sh
guest:*:200:0::/home/guest:/usr/bin/sh  

We had been printing out the password file over and over again for several weeks and it was printing correctly. Madankollu, to the end user, it was "printing garbage".

</aħħar>

Énième Network Kredenzjali Ħruġ Multi-Isfida u Soluzzjoni

My client recently installed a magic device from Juniper that apparently replaced their old Cisco network load balancer (NLB). At about the same time, we installed a hotfix to address a workflow problem.

A day or two later, we noticed a problem when we accessed the shared service provider (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, we didn’t know which of the two (Juniper or hotfix) would be the issue, though I strongly suspected the hotfix, figuring we had not installed it quite right.

It turned out that Juniper had some kind of compression setting. Wieħed mill- robed figures 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 browsers (IE 7 browsers worked without difficulty).

Allura, add "compression" to the hazards list.

</aħħar>

Credit to: http://www.elfwood.com/art/s/h/sherry/death_colour.jpg.html

Thinking About Nibdlu Pjattaforma Blogging

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", ħażna web deċenti u oħrajn.

Madankollu, 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.

Ewwel, 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 (jew speċjalment jonqsu milli jsibu) when they search my blog. It’s very hard to use lives spaces for that.

Tieni, there does not seem to be any mechanism to "monetize" a windows live space blog. Fil-fatt, sabiex jeħles ta 'reklami SM (minn fejn I jieħdu ebda vantaġġ), I need to actually pay Microsoft. (Mill-inqas, li kif I jifhimha; I ma setgħux jiksbu tweġibiet definittivi għal dan u mistoqsijiet bhalu).

Issa li stajt ltqajna mudell stabbilit u sett ta 'drawwiet blogging, I want to evaluate other options. I’ve done some research and there are a lot of choices, imma jien kurjużi dwar liema nies oħra, partikolarment oħrajn fil-komunità SharePoint (kif bloggers jew qarrejja), like to use.

Jekk dan jinteressak suġġett li inti u inti għandek opinjoni jew huma lesti li jaqsmu l-esperjenza tiegħek, jekk jogħġbok leave kumment jew email lili direttament.

Grazzi!

<aħħari />

Tags:

SharePoint Designer Email Jibgħat ???? fi Email

Forum users occasionally ask: Why does SharePoint Designer put ???? into my email instead of a field value?

One reason this happens is because the variable to which you refer is null.

This can happen because you are trying to reference a field from the "current item" but the user never entered a value into that form field.

<aħħari />

Qabbel / Testijiet għal Dati Blank fl SharePoint Designer Workflow

Xenarju: Fil Designer SharePoint workflow, you need to determine if a date field is blank.

Problema: SPD does not provide a direct method for comparing dates to anything other than a date. You cannot create a condition like this: "If [Data Field] equals blank".

Soluzzjoni: Convert the date to a string. Use string comparison to determine if the date is blank.

Shots Screen:

The following screen shots show how to do this. In this scenario, qasam fuq oġġett, "Environmental Permits:First Permit Reminder Date", tiġi sottomessa u n-nirien workflow b'rispons.

immaġni

immaġni

Noti:

Meta I ppruvaw dan, I was pleasantly surprised to learn that it works. I was worried that SharePoint Designer might disallow the string assignment (Varjabbli:StringReminderDateDate) iżda hija ma jippermettu.

I kien ukoll imħasseb li jippermetti li, il-valur jista 'jkun null u jew blow up il WF fil runtime jew forsi tgħolli t-temperatura globali 1/2 grad, iżda dawn il-preokkupazzjonijiet kienu infondati.

</aħħar>

Avukatura hija Still Pretty Għoli biex Testendi MOSS

Illum, 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, inti kkonfigurat l-CQWP li jgħaqqdu sorsi ta 'dejta tagħha, allura inti esportazzjoni lill workstation tiegħek, timmodifika <CommonViewFields>, upload, remove the original and now it’s ‘primed’ to display those other columns. Li jmiss, jiftħu SharePoint disinjatur, 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. Fl-aħħarnett, timmodifika l-mudell li tirrendi oqsma ġodda tiegħek! (Tinsiex li jiċċekkjaw lura fil sabiex l-utenti l-oħra jista 'jara r-riżultati)."

Dan kollu pjuttost ċar għalija (u ħafna minna tipi iżviluppatur SharePoint) x'inhu għaddej u kif huwa pjuttost sbieħ, verament, that the data retrieval aspects of the CQWP are so well-separate from the data presentation aspects. Iżda, mhuwiex daqshekk faċli biex jispjegaw, huwa?

<aħħari />

Uri Mistoqsija Parti kontenut Riżultati Web fil-Grid / Tabella

Ħarsa ġenerali u Objettiv

Barra mill-kaxxa, MOSS’ Parti kontenut Web Mistoqsija (CQWP) juri r-riżultati tagħha f'format lista, similar to search results. It is also possible to display the results in a grid format (I.E. F'format ta 'tabella HTML). Grid formats are better in some circumstances. I describe how to achieve that effect in this article.

Xenarju Business

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, such as title, budget, expected completion date, remaining budget and other summary type fields. By "singleton" I mean a custom SharePoint list guaranteed to contain only one item. Simplistically, jidher qisu dan:

immaġni

The technical approach is much the same as described hawn (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:

immaġni

HTML like this generates that result:

<html>
 <korp>
 <ċentru>
 <tabella fruntiera=1>

<!-- Labels -->
 <tr bgcolor=blue>
 <td><font color=white><b>Project Name</b></font></td>
 <td jallinjaw=right><font color=white><b>Complete Date</b></font></td>
 <td jallinjaw=right><font color=white><b>Budget</b></font></td>
 <td jallinjaw=right><font color=white><b>Actual Expense</b></font></td>
 <td><font color=white><b>Overall Status</b></font></td>
 </tr>

<tr>
 <td>Re-wire computer room.</td>
 <td jallinjaw=right>02/01/08</td>
 <td jallinjaw=right>22,500.00</td>
 <td jallinjaw=right>19,000.00</td>
 <td>In Progress</td>
 </tr>

<tr>
 <td>Provision servers for SQL Upgrade</td>
 <td jallinjaw=right>04/01/08</td>
 <td jallinjaw=right>7,500.00</td>
 <td jallinjaw=right>0.00</td>
 <td>Planned</td>
 </tr>

</tabella>
 </ċentru>
 </korp>
</html>

Approach

Follow these steps to create the grid:

  1. Identify the components of the grid (rows/columns).
  2. Define and create necessary site columns.
  3. Create sub sites for the projects and singleton lists.
  4. Add the CQWP to a web page and configure it to search for your lists.
  5. Modify the CQWP’s XML to gather up the additional columns.
  6. Modify the XSL to generate a table.

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 hawn (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) and Heather Solomon’s blog hawn (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Nuts And Bolts

Begin and implement steps one through five as per the MSDN documentation and Heather Solomon’s article.

F'dan il-punt, you’ve added your CQWP to the page and you have your <CommonViewFields> configured as necessary.

Following the usual steps, I get these intermediate results:

1. Oħloq tip kontenut, a templatized custom list for that content type and two sites. Here is the content type:

immaġni

Here is the site structure:

immaġni

2. Add the CQWP after creating my project subsites and singleton project summary lists:

immaġni

3. Add all the additional information I want via the <CommonViewFields>:

        <proprjetà isem="CommonViewFields" tip="string">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</proprjetà>

Note that I had to keep all the property fields on one line or it would not work (CQWP would tell me that the query returned no items).

4. F'dan il-punt, 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 to create a customized / unghosted version of ItemStyle.xsl. I follow Heather’s advice, up through step 11 and get these intermediate results:

4.1: Name my XSL template as follows:

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

I also slightly modify her suggested <XSL:għal-kull …> by adding a <br /> tag to provide a cleaner listing:

    <XSL:għal-kull tagħżel="@*">
      P:<XSL:il-valur tal- tagħżel="isem()" /><br/>
    </XSL:għal-kull>

4.2: I modify the web part, go to appearance and select my "Grid" stil:

immaġni

Apply the change and here is the result:

immaġni

We can see from the above that the fields we want (Project name, expense, status, eċċ) 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. Per eżempju, we reference Project Status as "Project_x005F_x0020_Name".

F'dan il-punt, we depart from Heather’s blog and from the shoulders of these giants, I add my own little bit.

ContentQueryMain.xsl

NOTA: When making changes to both ContentQueryMain.xsl as well as ItemStyle.xsl, you need to check those files back in before you see the effect of your changes.

For grid-making purposes, 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 <tabella> tag before emitting the first row of data and the closing <tabella> tag after emitting the last row. To accomplish this, ContentQueryMain.xsl is modified to pass two parameters to our "grid" template in ItemStyle.xsl, "last row" and "current row". ItemStyle.xsl uses these to conditionally emit the necessary tags.

Using Heather Solomon’s technique, we locate ContentQueryMain.xsl. It is located in the same place as ItemStyle.xsl. This screen shot should help:

immaġni

We need to make the following changes:

  • Modify an xsl template, "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 <tabella> tags.
  • Modify another bit of ContentQueryMain.xsl that calls the "CallItemTemplate" to pass it a "LastRow" parameter so that LastRow may be passed on to our Grid template.

Locate the template named "OuterTemplate.CallItemTemplate" identified by the string:

  <XSL:template isem="OuterTemplate.CallItemTemplate">

Replace the whole template as follows:

  <XSL:template isem="OuterTemplate.CallItemTemplate">
    <XSL:param isem="CurPosition" />

    <!--
      Add the "LastRow" parameter.
      We only use it when the item style pass in is "Grid".
    -->
    <XSL:param isem="LastRow" />

    <XSL:jagħżlu>
      <XSL:Meta test="@Style='NewsRollUpItem'">
        <XSL:apply-templates tagħżel="." mode="itemstyle">
          <XSL:ma 'param isem="EditMode" tagħżel="$cbq_iseditmode" />
        </XSL:apply-templates>
      </XSL:Meta>
      <XSL:Meta test="@Style='NewsBigItem'">
        <XSL:apply-templates tagħżel="." mode="itemstyle">
          <XSL:ma 'param isem="CurPos" tagħżel="$CurPosition" />
        </XSL:apply-templates>
      </XSL:Meta>
      <XSL:Meta test="@Style='NewsCategoryItem'">
        <XSL:apply-templates tagħżel="." mode="itemstyle">
          <XSL:ma 'param isem="CurPos" tagħżel="$CurPosition" />
        </XSL:apply-templates>
      </XSL:Meta>

      <!--
              Pass current position and lastrow to the Grid itemstyle.xsl template.
              ItemStyle.xsl will use that to emit the open and closing <tabella> tags.
      -->
      <XSL:Meta test="@Style='Grid'">
        <XSL:apply-templates tagħżel="." mode="itemstyle">
          <XSL:ma 'param isem="CurPos" tagħżel="$CurPosition" />
          <XSL:ma 'param isem="Last" tagħżel="$LastRow" />
        </XSL:apply-templates>
      </XSL:Meta>

      <XSL:inkella>
        <XSL:apply-templates tagħżel="." mode="itemstyle">
        </XSL:apply-templates>
      </XSL:inkella>
    </XSL:jagħżlu>
  </XSL:template>

The comments describe the purpose of the changes.

Of course, the "OuterTemplate.CallItemTemplate" is itself called from another template. Locate that template by searching for this text string:

<XSL:template isem="OuterTemplate.Body">

Scroll through the instructions in OuterTemplate.Body and insert the LastRow parameter as follows (shown as a comment in italics):

<XSL:call-template isem="OuterTemplate.CallItemTemplate">
  <XSL:ma 'param isem="CurPosition" tagħżel="$CurPosition" />
  <!-- Insert the LastRow parameter. -->
  <XSL:ma 'param isem="LastRow" tagħżel="$LastRow"/>
</XSL:call-template>

After all of this, we finally have things set up properly so that our ItemStyle.xsl can emit <tabella> tags at the right place.

ItemStyle.Xsl

NOTA: Għal darb'oħra, check in ItemStyle.xsl after making any changes so that you see the effect of those changes.

We have two tasks here:

  • 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. (You can tell that I have a tenuous handle on XSL).

Ewwel, near the top of ItemStyle.xsl, add this line:

  <!-- Some mumbo jumbo that enables us to display U.S. currency. -->
  <XSL:dećimali-format isem="staff" digit="D" />

  <XSL:template isem="Default" jaqblu="*" mode="itemstyle">

Note that I added it directly before the <XSL:template name="Default" …> definition.

Li jmiss, go back to our Grid template. Replace the entire Grid template with the code below. It is thoroughly commented, but don’t hesitate to email me or leave comments on my blog if you have questions.

  <XSL:template isem="Grid" jaqblu="Row[@Style='Grid']" mode="itemstyle">

    <!--
      ContentMain.xsl passes CurPos and Last.
      We use these to conditionally emit the open and closing <tabella> tags.
    -->
    <XSL:param isem="CurPos" />
    <XSL:param isem="Last" />

    <!-- The following variables are unmodified from the standard ItemStyle.xsl -->
    <XSL:varjabbli isem="SafeImageUrl">
      <XSL:call-template isem="OuterTemplate.GetSafeStaticUrl">
        <XSL:ma 'param isem="UrlColumnName" tagħżel="'ImageUrl'"/>
      </XSL:call-template>
    </XSL:varjabbli>
    <XSL:varjabbli isem="SafeLinkUrl">
      <XSL:call-template isem="OuterTemplate.GetSafeLink">
        <XSL:ma 'param isem="UrlColumnName" tagħżel="'LinkUrl'"/>
      </XSL:call-template>
    </XSL:varjabbli>
    <XSL:varjabbli isem="DisplayTitle">
      <XSL:call-template isem="OuterTemplate.GetTitle">
        <XSL:ma 'param isem="Titolu" tagħżel="@Title"/>
        <XSL:ma 'param isem="UrlColumnName" tagħżel="'LinkUrl'"/>
      </XSL:call-template>
    </XSL:varjabbli>
    <XSL:varjabbli isem="LinkTarget">
      <XSL:jekk test="@OpenInNewWindow = 'True'" >_blank</XSL:jekk>
    </XSL:varjabbli>

    <!--
      Here we define a variable, "tableStart".  This contains the HTML
      that we use to define the opening of the table as well as the column
      labels.  Note that if CurPos = 1, it includes the HTML in a CDATA tag.
      Otherwise, it will be empty.

      The value of tableStart is emited every time ItemStyle is called via
      ContentQueryMain.xsl.
    -->
    <XSL:varjabbli isem="tableStart">
      <XSL:jekk test="$CurPos = 1">
        <![CDATA[
        <table border=1>
          <tr bgcolor="blue">
            <td><font color="white"><b>Project Name</b></font></td>
            <td align="right"><font color="white"><b>Complete Date</b></font></td>
            <td align="right"><font color="white"><b>Budget</b></font></td>
            <td align="right"><font color="white"><b>Actual Expense</b></font></td>
            <td><font color="white"><b>Overall Status</b></font></td>
          </tr>
        ]]>
      </XSL:jekk>
    </XSL:varjabbli>

    <!--
      Another variable, tableEnd simply defines the closing table tag.

      As with tableStart, it's always emited.  This is why its value is
      assigned conditionally based upon whether we've been passed the last
      row by ContentQueryMain.xsl.
    -->
    <XSL:varjabbli isem="tableEnd">
      <XSL:jekk test="$CurPos = $Last">
        <![CDATA[ </tabella> ]]>
      </XSL:jekk>
    </XSL:varjabbli>

    <!--
      Always emit the contents of tableStart.  If this is not the first
      row passed to us by ContentQueryMain.xsl, then we know its value
      will be blank.

      Disable output escaping because when tableStart it not blank, it
      includes actual HTML that we want to be rendered by the browser.  If
      we don't tell the XSL parser to disable output escaping, it will generate
      stuff like "&lt;tabella&gt;" instead of "<tabella>".
    -->
    <XSL:il-valur tal- tagħżel="$tableStart" jiskonnettja-output-ħarba="iva"/>


    <tr>
      <!--
      P:Project_x005F_x0020_Name
      P:Project_x005F_x0020_End_x005F_x0020_Date
      P:Project_x005F_x0020_Budget
      P:Project_x005F_x0020_Expenses
      P:Project_x005F_x0020_Status
      -->
      <td>
        <XSL:il-valur tal- tagħżel="@Project_x005F_x0020_Name"/>
      </td>

      <td jallinjaw="dritt">
        <XSL:il-valur tal- tagħżel="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </td>

      <td jallinjaw="dritt">
        <XSL:call-template isem="formatcurrency">
          <XSL:ma 'param isem="valur" 
tagħżel="@Project_x005F_x0020_Budget"></XSL:ma 'param> </XSL:call-template> </td> <td jallinjaw="dritt"> <XSL:call-template isem="formatcurrency"> <XSL:ma 'param isem="valur" tagħżel="@Project_x005F_x0020_Expenses">
</XSL:ma 'param> </XSL:call-template> </td> <td> <XSL:il-valur tal- tagħżel="@Project_x005F_x0020_Status"/> </td> <!-- All of the following is commented out to clarify things. Madankollu, bring it back and stuff it into a <td> to see its effect. --> <!-- <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> </div> </XSL:jekk> <div class="link-item"> <XSL:call-template
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a href="{$SafeLinkUrl}"
target="{$LinkTarget}" title="{@LinkToolTip}"> <XSL:value-of select="$DisplayTitle"/> </a> <div class="description"> <XSL:value-of select="@Description" /> </div> </div> </div>
--> </tr> <!-- Emit the closing table tag. If we are not on the last row, this will be blank. --> <XSL:il-valur tal- tagħżel="$tableEnd" jiskonnettja-output-ħarba="iva"/> </XSL:template> <XSL:template isem="formatcurrency"> <XSL:param isem="valur" tagħżel="0" /> <XSL:il-valur tal- tagħżel="-Numru format($valur, "$DDD,DDD,DDD.DD", "staff")" /> </XSL:template>

Standard WSS / MOSS Screens Dħul ta 'Data ma jsostnux Cascading Drop-downs (jew oħrajn intra-komunikazzjoni mill-)

UPDATE (04/2008): Din l-entrata blog kbir juri approċċ ibbażat javascript tajba biex din il-problema: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

AĠĠORNAMENT II: (04/2008): Din l-entrata blog tidher promettenti kif ukoll: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Diversi drabi fil-ġimgħa, jekk mhux kuljum, forum users describe a requirement that would normally be met via cascading drop-downs. Per eżempju, Għandi żewġ kontrolli drop-down:

  • Lista ta 'U.S. istati
  • Lista ta 'U.S. bliet.

Bħala fornituri UI responsabbli, irridu li jopera bħal dan:

  • Paul jagħżel U.S. state from the drop-down.
  • This causes the cities drop-down to filter only those cities that belong to the selected state.
  • Paul jagħżel belt mill-lista iffiltrat.

There is no out-of-the-box support for this feature. Fil-fatt, 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.

L-għan reali ta 'dan l-artikolu li biex jiddeskrivi soluzzjonijiet possibbli u dawn huma l-għażliet kif naf minnhom:

  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. F'dan il-każ, inti normalment tipprova tuża kolonna kkalkulata, iżda xi drabi, 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, ikunu konxji tal-kwistjoni indirizzata minn dan l-artikolu (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Handlers Avveniment: Bħall workflow, 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 (u l-mudell oġġett sħiħ) u tista 'tagħmel kwalunkwe kalkolu meħtieġ.
  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 ASP.NET funzjoni dħul tiegħek data (bħala paġna web stand-alone jew bħala parti web) u l-użu li minflok.

Jekk xi ħadd jaf l-oħra u / jew aħjar għażliet, jekk jogħġbok post kumment u jien ser taġġorna l-korp ta 'din il-kariga.

<aħħari />

Yes/No (kaxxa verifika) filtrazzjoni fil Kontenut Mistoqsija Web Parti

To filter for a query for the Yes/No check box entitled "PG Milestone", kkonfigurat CQWP bħal dan:

immaġni

Din hija waħda ieħor ta 'dawk ovvju-darba you-know-it iżda diffiċli biex isibu-l-tweġiba għall-mistoqsijiet-: Kif tiffiltra fuq / Le kaxxa kontroll Iva użu tal-parti kontenut tal-web query.

L-ewwel riżultat tat-tiftix I find using the search term "filter yes/no content query web part" huwa qatigħ ħażin, hekk ħsibt I d tpoġġi dan up hemm u ara jekk jista 'jissostitwixxi l-riżultat żbaljat fl-rizultati tipiċi.

Huwa pjuttost faċli: True values = "1" and false values do not equal "1" (pretty retro, attwalment).

Fl-eżempju ta 'hawn fuq, I created site column of type "Yes/No (Checkbox)" named "PG Milestone". I added it to a doc library, uploaded ftit dokumenti, jiffissa l-valur għal ftit u ttestjati.

<aħħari />