arquivos mensuais: Decembro 2007

Meu Fillo Hacked Gamespot

Así, esta mañá, meu fillo está determinado a ver un halo de idade 13 restrinxida 3 vídeo en 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 real data de nacemento, el realmente pode entrar calquera birth date he wants. Once he realized that, fixo-se vello o suficiente para ver o vídeo.

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

Domingo divertido: “É impresión de lixo”

O primeiro traballo fóra da facultade en 1991, Tiven a sorte de traballar para unha empresa de manufactura con 13 locais, 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.

O proxecto rula ao longo e estou enviado a Baltimore cun novo compañeiro de traballo, Jeff. Our job was to power up the Unix box, comproba se o A / S estaba funcionando, instalar o sistema ERP, configurar ERP, train people on the ERP and do custom work for folks on the spot. (Este foi un traballo de soño, sobre todo vindo en liña recta fóra da facultade). Before we could really get off the ground, que necesitabamos para descomprimir todos os tubos verdes, put them on desks and wire them. And the best part was that we had to put the RJ11 connectors on ourselves.

Por algunha razón que eu nunca entendín e realmente nunca pensei en preguntar sobre o tempo, Nós tiñamos tido algúns empresa contratante vir e executar cabo en toda a planta, but we didn’t have them put on the connectors. Así, there was a "patch box" with dozens of of unlabeled cables in the "computer room" e estes serpenteava en torno do edificio para varios lugares do edificio.

Traballamos o noso camiño a través del, ao longo dun fin de semana, probar cada fío, poñer un conector (asegurarse de que era recta vs. cruzado), garantindo a configuración de bits nos tubos verdes e impresoras estaban correctos, 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.

Pero, 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, pero a impresora se converteu nun pesadelo de tres semanas.

Se non sabe, ou que suprimiu, xestionar tubos verdes e impresoras deste xeito, there are various options that you deal with by setting various pins. 8-bocado, 7-bocado, paridade (par / impar / ningún), probably others. If you get one of those settings wrong, o tubo ou a impresora aínda mostra cousas, pero será xerga total, or it will be gibberish with a lot of recognizable stuff in between. Por suposto, these pins are hard to see and have to be set by using a small flat-edge screw driver. And they are never standard.

Montar a primeira de moitas chamadas rápidas co NJ cara (un inimigo ordenador grisalho que probablemente nos maldí até hoxe). 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, nunca está seguro de se estaba facendo isto correctamente.

É hora de ir en directo, todo en Baltimore está cantarolando, pero non podemos comezar a impresora maldito en NJ para traballar! 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", coa esperanza de que quizais haxa algún indicio de que o lixo que vai nos dicir o que estamos facendo de malo.

Cando chegamos o fax, we immediately knew what was wrong. Ver, our method of testing whether we had configured a printer correctly was to issue an "lp" comando coma este:

lp / etc / passwd

Basicamente, 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:

ferreiro:*:100:100:8A-74(oficina):/home / smith:/usr / bin / sh
:*:200:0::/home / invitado:/usr/bin/sh  

We had been printing out the password file over and over again for several weeks and it was printing correctly. Con todo, para o usuario final, it was "printing garbage".

</final>

Yet Another Rede emitir credenciais multi-Challenge e Resolución

O meu cliente instalouse recentemente un dispositivo máxico de Zimbro que aparentemente substituíu o antigo Cisco balance de carga de rede (NLB). At about the same time, instalouse un hotfix para resolver un problema de fluxo de traballo.

Un ou dous días despois, notamos un problema cando acessamos os provedores de servizos compartidos (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, Non sabemos cal dos dous (Juniper ou hotfix) sería o tema, aínda que sospeito fortemente o hotfix, descubrir que non tiña instalado seguro.

It turned out that Juniper had some kind of compression setting. Un dos figuras de túnica 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 navegadores (IE 7 exploradores traballaron sen dificultade).

Así, add "compression" á lista de perigos.

</final>

Crédito para: http://www.elfwood.com/art/s/h/sherry/death_colour.jpg.html

Pensando en cambiar de plataforma Blogging

Comecei a miña carreira blogging "" using Microsoft’s platform and it’s been good to me. It’s easy to post, hai boas opcións e widgets para xestionar o seu "espazo", almacenamento web decente e así por diante.

Con todo, 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.

Primeiro, 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 (ou, sobre todo, non poden atopar) when they search my blog. It’s very hard to use lives spaces for that.

Segundo, there does not seem to be any mechanism to "monetize" a windows live space blog. En realidade, a fin de se librar dos anuncios MS (desde o que eu sacar ningún beneficio), I need to actually pay Microsoft. (Polo menos, é así que eu entendo; Eu fun incapaz de obter respostas definitivas para esta e preguntas gusto).

Agora que eu teño un patrón establecido e un conxunto de blogs hábitos, I want to evaluate other options. I’ve done some research and there are a lot of choices, pero estou curioso para saber o que as outras persoas, particularmente outros na comunidade SharePoint (como bloggers ou lectores), like to use.

Si este tema lle interesa e ten unha opinión ou están dispostos a compartir a súa experiencia, por favor, deixe un comentario ou enviar un correo directamente.

Grazas!

</ Comezo>

Technorati Tags:

SharePoint Deseño Email Envía ???? en un correo-e

Os usuarios do foro, en ocasións, pedir: Por que poñer o SharePoint Design ???? no meu correo electrónico en lugar dun valor de campo?

Unha razón isto acontece é porque a variable á que se refire é nulo.

Isto pode ocorrer porque estás a facer referencia a un campo do elemento "actual" but the user never entered a value into that form field.

</ Comezo>

Comparar / Proba para as datas en branco ao SharePoint Workflow Design

Escenario: En un fluxo de traballo do SharePoint Design, 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: "Se [DateField] é igual en branco ".

Solución: 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. Neste escenario, a field on an item, "Environmental Permits:First Permit Reminder Date", is submitted and the workflow fires in response.

imaxe

imaxe

Notas:

When I tried this, I was pleasantly surprised to learn that it works. I was worried that SharePoint Designer might disallow the string assignment (Variable: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.

</final>

Bar aínda é moi alta para estender Moss

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

"Primeiro, configurar o CQWP para conectarse a súas fontes de datos, a continuación, export-lo para a súa estación de traballo, modificar <CommonViewFields>, subir, remove the original and now it’s ‘primed’ to display those other columns. Seguinte, abrir o SharePoint Deseño, 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. Finalmente, modificar o modelo para facer os seus novos campos! (Non esqueza comprobar-lo de volta para que outros usuarios poden ver os resultados)."

É todo moi claro para min (ea maioría de nós tipo creador do SharePoint) o que está pasando e como el é moi bo, realmente, that the data retrieval aspects of the CQWP are so well-separate from the data presentation aspects. Pero, non é tan fácil de explicar, é?

</ Comezo>

Technorati Tags: ,

Dar a coñecer o contido da consulta Resultados web Part nunha reixa / Táboa

Descricións e Obxectivo

Fóra da caixa, Moss’ Content Query web Part (CQWP) exhibe os seus resultados nun formato de lista, similar to search results. It is also possible to display the results in a grid format (i.e. HTML formato de táboa). Grid formats are better in some circumstances. I describe how to achieve that effect in this article.

Escenario empresarial

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, como título, orzamento, data de conclusión prevista, remaining budget and other summary type fields. By "singleton" I mean a custom SharePoint list guaranteed to contain only one item. Simplistically, parece que esta:

imaxe

O enfoque técnico é do mesmo xeito como se describe aquí (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:

imaxe

HTML como este que xera resultado:

<html>
 <corpo>
 <centro>
 <mesa fronteira= 1>

<!-- Etiquetas ->
 <tr bgcolor= Blue>
 <td><fonte cor= Branco><b>Nome do Proxecto</b></fonte></td>
 <td aliñar= Right><fonte cor= Branco><b>Data completar</b></fonte></td>
 <td aliñar= Right><fonte cor= Branco><b>Orzamento</b></fonte></td>
 <td aliñar= Right><fonte cor= Branco><b>Gasto real</b></fonte></td>
 <td><fonte cor= Branco><b>Estado xeral</b></fonte></td>
 </tr>

<tr>
 <td>Sala de informática Re-wire.</td>
 <td aliñar= Right>02/01/08</td>
 <td aliñar= Right>22,500.00</td>
 <td aliñar= Right>19,000.00</td>
 <td>En marcha</td>
 </tr>

<tr>
 <td>Provisionar servidores SQL para actualización</td>
 <td aliñar= Right>04/01/08</td>
 <td aliñar= Right>7,500.00</td>
 <td aliñar= Right>0.00</td>
 <td>Planeado</td>
 </tr>

</mesa>
 </centro>
 </corpo>
</html>

Aproximación

Siga estes pasos para crear a reixa:

  1. Identificar os compoñentes da reixa (liñas / columnas).
  2. Definir e crear columnas de sitio necesarias.
  3. Crear sitios sub para os proxectos e listas únicas.
  4. Engadir o CQWP a unha páxina web e configuralo para buscar as súas listas.
  5. Modificar XML do CQWP para recoller as columnas adicionais.
  6. Editar o XSL para xerar unha táboa.

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 aquí (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) e blog de Heather Solomon aquí (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Porcas e parafusos

Comezar e aplicar medidas de un a cinco anos segundo a documentación do MSDN e artigo de Heather Solomon.

Neste punto, engadiu o CQWP á páxina e ten a súa <CommonViewFields> configurar que corresponda.

Seguindo os pasos habituais, Eu recibín estes resultados intermedios:

1. Crear un tipo de contido, a templatized custom list for that content type and two sites. Here is the content type:

imaxe

Aquí está a estrutura do sitio:

imaxe

2. Engadir o CQWP despois de crear os meus subsites proxecto e únicas proxecto listas sumarias:

imaxe

3. Fai toda a información adicional que quero vía <CommonViewFields>:

        <propiedade nome="CommonViewFields" tipo="corda">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</propiedade>

Nótese que eu tiña que manter todos os campos de propiedade nunha liña ou que non ía funcionar (CQWP iría me dicir que a consulta non devolveu elementos).

4. Neste punto, 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 para crear un personalizado / unghosted version of ItemStyle.xsl. I follow Heather’s advice, ata a etapa 11 e obter eses resultados intermedios:

4.1: O nome do meu template XSL como segue:

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

I tamén modificar lixeiramente a súa suxerido <XSL:a-cada …> pola adición dun <br /> etiqueta para fornecer unha listaxe máis limpo:

    <XSL:a-cada seleccionar="@ *">
      P:<XSL:valor de seleccionar="nome()" /><br/>
    </XSL:a-cada>

4.2: Eu modificar a parte web, go to appearance and select my "Grid" estilo:

imaxe

Aplicar o cambio e aquí está o resultado:

imaxe

Podemos ver enriba que os campos que queremos (Nome do proxecto, gasto, Estado, etc) 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. Por exemplo, we reference Project Status as "Project_x005F_x0020_Name".

Neste punto, partimos do blog de Heather e dos ombros destes xigantes, Eu podo engadir o meu propio pouco.

ContentQueryMain.xsl

NOTA: Ao facer cambios en ambos ContentQueryMain.xsl así como ItemStyle.xsl, ten que comprobar os arquivos de volta antes de ver o efecto das súas alteracións.

Para fins de reixa de decisións, 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 <mesa> cita antes emitindo a primeira liña de datos e do peche <mesa> tag after emitting the last row. To accomplish this, ContentQueryMain.xsl is modified to pass two parameters to our "grid" modelo no ItemStyle.xsl, "last row" and "current row". ItemStyle.xsl uses these to conditionally emit the necessary tags.

Empregando a técnica de Heather Solomon, we locate ContentQueryMain.xsl. It is located in the same place as ItemStyle.xsl. This screen shot should help:

imaxe

Temos que facer os seguintes cambios:

  • Modificar un modelo 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 <mesa> Tag.
  • Modify another bit of ContentQueryMain.xsl that calls the "CallItemTemplate" to pass it a "LastRow" parámetro para que LastRow pode ser repassada ao noso modelo de Reixa.

Locate the template named "OuterTemplate.CallItemTemplate" identificado pola cadea:

  <XSL:modelo nome="OuterTemplate.CallItemTemplate">

Substituír todo o modelo como segue:

  <XSL:modelo nome="OuterTemplate.CallItemTemplate">
    <XSL:paran nome="CurPosition" />

    <!--
      Add the "LastRow" parámetro.
      We only use it when the item style pass in is "Grid".
    -->
    <XSL:paran nome="LastRow" />

    <XSL:escoller>
      <XSL:cando proba="@ Style = 'NewsRollUpItem'">
        <XSL:apply-templates seleccionar="." xeito="ItemStyle">
          <XSL:con-paran nome="Modo Edición" seleccionar="$cbq_iseditmode" />
        </XSL:apply-templates>
      </XSL:cando>
      <XSL:cando proba="@ Style = 'NewsBigItem'">
        <XSL:apply-templates seleccionar="." xeito="ItemStyle">
          <XSL:con-paran nome="CurPos" seleccionar="$CurPosition" />
        </XSL:apply-templates>
      </XSL:cando>
      <XSL:cando proba="@ Style = 'NewsCategoryItem'">
        <XSL:apply-templates seleccionar="." xeito="ItemStyle">
          <XSL:con-paran nome="CurPos" seleccionar="$CurPosition" />
        </XSL:apply-templates>
      </XSL:cando>

      <!--
              Pase posición actual e LastRow ao modelo ItemStyle.xsl Reixa.
              ItemStyle.xsl vai usar isto para obter a apertura e peche <mesa> Tag.
      -->
      <XSL:cando proba="@ Style = 'Grid'">
        <XSL:apply-templates seleccionar="." xeito="ItemStyle">
          <XSL:con-paran nome="CurPos" seleccionar="$CurPosition" />
          <XSL:con-paran nome="Último" seleccionar="$LastRow" />
        </XSL:apply-templates>
      </XSL:cando>

      <XSL:se non>
        <XSL:apply-templates seleccionar="." xeito="ItemStyle">
        </XSL:apply-templates>
      </XSL:se non>
    </XSL:escoller>
  </XSL:modelo>

As observacións describen o efecto do cambio.

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

<XSL:modelo nome="OuterTemplate.Body">

Desprácese entre as instruccións OuterTemplate.Body e introducir o parámetro LastRow como segue (aparece como un comentario en cursiva):

<XSL:call-template nome="OuterTemplate.CallItemTemplate">
  <XSL:con-paran nome="CurPosition" seleccionar="$CurPosition" />
  <!-- Insire o parámetro LastRow. -->
  <XSL:con-paran nome="LastRow" seleccionar="$LastRow"/>
</XSL:call-template>

Despois de todo isto, Finalmente temos cousas configurado correctamente para que o noso ItemStyle.xsl pode emitir <mesa> etiquetas no lugar seguro.

ItemStyle.xsl

NOTA: De novo, facturación ItemStyle.xsl despois de facer todos os cambios para que vexa o efecto desas mudanzas.

Temos dúas tarefas aquí:

  • 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. (Pode dicir que eu teño unha alza tenue en XSL).

Primeiro, na parte superior ItemStyle.xsl, engadir esta liña:

  <!-- Algúns patranhas que nos permite visualizar U.S. moeda. -->
  <XSL:decimal-formato nome="persoal" díxito="D" />

  <XSL:modelo nome="Omisión" corresponden="*" xeito="ItemStyle">

Teña en conta que eu engade-o directamente antes da <XSL:template name="Default" …> definición.

Seguinte, go back to our Grid template. Replace the entire Grid template with the code below. It is thoroughly commented, pero non dubide en me enviar correo-e ou deixar un comentario no meu blog, se ten dúbidas.

  <XSL:modelo nome="Reixa" corresponden="Liña[@ Style = 'Grid']" xeito="ItemStyle">

    <!--
      ContentMain.xsl pasa CurPos e última.
      Nós usalos para emitir condicional a ceo aberto e peche <mesa> Tag.
    -->
    <XSL:paran nome="CurPos" />
    <XSL:paran nome="Último" />

    <!-- As seguintes variables son non modificados a partir do patrón de ItemStyle.xsl -->
    <XSL:variable nome="SafeImageUrl">
      <XSL:call-template nome="OuterTemplate.GetSafeStaticUrl">
        <XSL:con-paran nome="UrlColumnName" seleccionar="'ImageUrl'"/>
      </XSL:call-template>
    </XSL:variable>
    <XSL:variable nome="SafeLinkUrl">
      <XSL:call-template nome="OuterTemplate.GetSafeLink">
        <XSL:con-paran nome="UrlColumnName" seleccionar="'LinkUrl'"/>
      </XSL:call-template>
    </XSL:variable>
    <XSL:variable nome="DisplayTitle">
      <XSL:call-template nome="OuterTemplate.GetTitle">
        <XSL:con-paran nome="Título" seleccionar="@ Título"/>
        <XSL:con-paran nome="UrlColumnName" seleccionar="'LinkUrl'"/>
      </XSL:call-template>
    </XSL:variable>
    <XSL:variable nome="LinkTarget">
      <XSL:se proba="@ OpenInNewWindow = 'True'" >_blank</XSL:se>
    </XSL:variable>

    <!--
      Aquí imos definir unha variable, "tableStart".  Este contén o código HTML
      .  Nótese que se CurPos = 1, inclúe o HTML nunha etiqueta CDATA.
      En caso contrario, estará baleiro.

      O valor de tableStart é emited cada vez ItemStyle chámase través
      .
    -->
    <XSL:variable nome="tableStart">
      <XSL:se proba="$CurPos = 1">
        <![CDATA[
        <borde da táboa = 1>
          <tr bgcolor="blue">
            <td><font color="white"><b>Nome do Proxecto</b></fonte></td>
            <td align="right"><font color="white"><b>Data completar</b></fonte></td>
            <td align="right"><font color="white"><b>Orzamento</b></fonte></td>
            <td align="right"><font color="white"><b>Gasto real</b></fonte></td>
            <td><font color="white"><b>Estado xeral</b></fonte></td>
          </tr>
        ]]>
      </XSL:se>
    </XSL:variable>

    <!--
      Outra variable, tableEnd define simplemente tag mesa de clausura.

      Igual que tableStart, sempre emited.  É por iso que o seu valor é
      .
    -->
    <XSL:variable nome="tableEnd">
      <XSL:se proba="$CurPos = $ Última">
        <![CDATA[ </mesa> ]]>
      </XSL:se>
    </XSL:variable>

    <!--
      Sempre liberan o contido da tableStart.  Se este non é o primeiro
      , entón sabemos o seu valor
      .

      Desactivar saída fuxir porque cando tableStart non en branco, el
      .  Se
      , it will generate
      stuff like "&lt;mesa&gt;" instead of "<mesa>".
    -->
    <XSL:valor de seleccionar="$tableStart" disable-output-escapar="si"/>


    <tr>
      <!--
      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:valor de seleccionar="@ Project_x005F_x0020_Name"/>
      </td>

      <td aliñar="dereito">
        <XSL:valor de seleccionar="@ Project_x005F_x0020_End_x005F_x0020_Date"/>
      </td>

      <td aliñar="dereito">
        <XSL:call-template nome="FormatCurrency">
          <XSL:con-paran nome="valor" 
seleccionar="@ Project_x005F_x0020_Budget"></XSL:con-paran> </XSL:call-template> </td> <td aliñar="dereito"> <XSL:call-template nome="FormatCurrency"> <XSL:con-paran nome="valor" seleccionar="@ Project_x005F_x0020_Expenses">
</XSL:con-paran> </XSL:call-template> </td> <td> <XSL:valor de seleccionar="@ Project_x005F_x0020_Status"/> </td> <!-- Todo o que sigue é comentado para aclarar as cousas. Con todo, trae-lo de volta e enche-lo nun <td> para ver a súa         . --> <!-- <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}"/> </un> </p> </XSL:se> <div class="link-item"> <XSL:call-template
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a href="{$SafeLinkUrl}"
target="{$LinkTarget}" title="{@ LinkToolTip}"> <XSL:value-of select="$DisplayTitle"/> </un> <div class="description"> <XSL:value-of select="@Description" /> </p> </p> </p>
--> </tr> <!-- Emitir tag mesa de clausura. Se non estamos na última liña, este quedará en branco. --> <XSL:valor de seleccionar="$tableEnd" disable-output-escapar="si"/> </XSL:modelo> <XSL:modelo nome="FormatCurrency"> <XSL:paran nome="valor" seleccionar="0" /> <XSL:valor de seleccionar='formato de número($valor, "$DDD,DDD,DDD.DD", "staff")' /> </XSL:modelo>

Estándar do WSS / Moss pantallas de entrada de datos non soportan a fervenza drop-Downs (ou outro intra-de comunicación)

Actualización (04/2008): Esta entrada de blogue gran mostra unha visión baseada en JavaScript bo a este problema: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

Actualización II: (04/2008): Este blog parece prometedor, así: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Varias veces por semana, se non diariamente, forum users describe a requirement that would normally be met via cascading drop-downs. Por exemplo, Eu teño dous desplegable controis:

  • Lista de U.S. estados
  • Lista de U.S. cities.

As responsible UI providers, we want it to operate like this:

  • Paul selects a 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 selects a city from this filtered list.

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

The real objective of this article to to describe possible solutions and these are the options as I know them:

  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. Neste caso, you would normally try to use a calculated column, but some times, 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, be aware of the issue addressed by Neste artigo (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Event handlers: Like 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 (and the whole object model) and can do any needed calculation.
  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 data entry function (as a stand-alone web page or as a web part) and use that instead.

If anyone knows other and/or better options, please post a comment and I’ll update the body of this post.

</ Comezo>

Si / Non (caixa de verificación) filtrado na parte de Consulta de Contido Web

Para filtrar por unha consulta para o Si / Non caixa de verificación titulada "PG Milestone", configurar CQWP como esta:

imaxe

Este é un dos obvios, xa que-se-sabe-lo, pero difícil de atopar-unha resposta ás preguntas-: Como filtrar nun Si / Non caixa de verificación mediante o Contido Query web Part.

O primeiro resultado da busca I find using the search term "filter yes/no content query web part" é algo totalmente incorrecto, entón eu penso que eu ía poñer isto alí enriba e ver se pode substituír o resultado incorrecto resultados de procura típicos.

É moi fácil: True values = "1" and false values do not equal "1" (moi retro, na realidade).

No exemplo anterior,, I created site column of type "Yes/No (checkbox)" named "PG Milestone". I added it to a doc library, cargado algúns documentos, establecer o valor para unha parella e proba.

</ Comezo>