archivos mensuales: Diciembre 2007

Mi hijo hackeado Gamespot

Por lo tanto, esta mañana, mi hijo está decidido a ver que una edad-trece restringido Halo 3 video en GameSpot. Estoy fuera de palear nieve, así que no estoy allí para ayudar o dificultar. Necesidad es la madre de la invención y todo lo que … él tiene un eureka! momento. Él se da cuenta de aunque Gamespot lo quiere entrar en su real fecha de nacimiento, en realidad puede entrar cualquier fecha de nacimiento que quiere. Una vez que se dio cuenta de, se hizo lo suficientemente viejo para ver el video.

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

Domingo divertido: “Es basura de impresión”

En mi primer trabajo fuera de la Universidad en 1991, Tuve la suerte de trabajar para una empresa de fabricación con 13 ubicaciones, no incluyendo su HQ Corporativo en New Jersey. Entré justo cuando la empresa estaba lanzando un nuevo sistema ERP. Éramos un pequeño departamento de en conjunto cerca de diez personas, dos de los cuales no viajó. Parte del proyecto sustitución de sistema de IBM 36 cajas con hardware HP y HPUX. Todo el mundo utiliza tubos verdes para acceder al sistema.

El proyecto a lo largo de los rodillos y me enviaron a Baltimore con un nuevo compañero de trabajo, Jeff. Nuestro trabajo fue para encender en el cuadro de Unix, Asegúrese de que el sistema operativo corría, instalar el sistema ERP, configurar el ERP, formar personas en el ERP y hacer trabajos a medida para la gente en el lugar. (Este fue un trabajo de ensueño, especialmente viniendo directamente de la Universidad). Antes de que realmente podríamos obtener de la tierra, necesitábamos para descomprimir todos los tubos verdes, poner en el escritorio y conéctelos. Y la mejor parte era que teníamos que poner los conectores RJ11 en nosotros mismos.

Por alguna razón que nunca entendí y realmente nunca pensé en preguntarle al tiempo, habíamos tenido alguna empresa contratante venga y pase el cable por toda la planta, pero no les ponga en los conectores. Por lo tanto, había una caja parche"" con decenas de cables sin etiqueta en la sala de ordenadores"" y estos serpenteaba alrededor del edificio a distintos lugares en el edificio.

Hemos trabajado nuestro camino a través de él en el transcurso de un fin de semana, prueba cada cable, poner en un conector (asegurándose de que fue vs rectas. cruzado), asegurando la configuración de bits de los tubos verdes y las impresoras estaban correctos, etiquetado los cables, asegurándose getty"" funcionaba correctamente para cada puerto y probablemente 1 mil otras cosas que yo he suprimido desde entonces. Todo se unieron muy bien.

Pero, hubo un importante cable que no pudimos averiguar. La planta de Baltimore tuvo una relación con una ubicación de almacenamiento en Nueva Jersey. Algunos pedidos en Baltimore envían fuera de ese lugar. Había dos cables que teníamos para conectar a la caja de HPUX: un tubo verde y una impresora. El tubo verde era fácil, Pero la impresora se convirtió en una pesadilla de tres semanas.

Si no lo sabes, o lo han suprimido, lidiando con las impresoras y los tubos verdes de esta manera, Hay varias opciones que tratan mediante el establecimiento de varios pins. 8-bit, 7-bit, paridad (incluso/impar/ninguno), probablemente otros. Si consigues uno de esos valores equivocados, el tubo o la impresora sigue mostrando cosas, Pero será un galimatías total, o va a ser un galimatías con un montón de cosas reconocibles entre. Claro, Estos pines son difíciles de ver y tener que ajustarse utilizando un destornillador pequeño de punta plana. Y nunca son estándar.

Establecimos la primera de muchas llamadas rápidas con el tipo de NJ (un envidioso curtido equipo que probablemente nos maldice a este día). Tenemos el tubo verde trabajando muy rápidamente, pero no pudimos conseguir la impresora para trabajar. Guardó "impresión basura". Crear un nuevo conector RJ11, conmutación entre cruzados y rectos. Eliminaría el puerto y volver a crearlas en Unix. Pasamos por la ardua tarea de lo que nos explican la configuración de pines de la impresora, No sé si lo estaba haciendo correctamente.

Es hora de ir a vivir, todo en Baltimore está tarareando, Pero no podemos entrar la impresora maldice NJ para trabajar! Hemos agotado todas las posibilidades excepto para ir al trabajo de la impresora en persona hasta NJ. Para evitar todo lo que conduce, Finalmente le pedimos que nos envíe fax lo consiguió cuando es "basura"., con la esperanza de que tal vez habrá alguna pista en esa basura que nos diga qué estamos haciendo mal.

Cuando recibimos el fax, inmediatamente sabíamos lo que estaba mal. Ver, nuestro método de comprobar si habíamos configurado una impresora correctamente fue emitir un "lp" orden como:

LP/etc/passwd

Básicamente, nos imprime el archivo de contraseña de unix. Está siempre presente y fuera de la caja, siempre una sola página. Te estándar Unix contraseña de archivo se ve algo como esto:

Smith:*:100:100:8A-74(Oficina):/Inicio/smith:/usr/bin/sh guest:*:200:0::/Página de inicio/huésped:/usr/bin/sh  

Nosotros habíamos sido imprimir el archivo de contraseñas una y otra vez durante varias semanas y fue la impresión correctamente. Sin embargo, para el usuario final, fue "impresión basura".

</final>

Sin embargo, otra red credenciales Multi-Challenge problema y solución

Mi cliente instalado recientemente un dispositivo mágico de Enebro Eso aparentemente reemplazar su viejo equilibrador de carga de red de Cisco (NLB). Aproximadamente al mismo tiempo, Instalamos un Hotfix para abordar un problema de flujo de trabajo.

Un día o dos más tarde, hemos notado un problema cuando accede al proveedor de servicios compartidos (PS3). Podríamos llegar a ella, pero nosotros le desafió un ID de usuario y contraseña muchas veces en cada página. Esto no ocurre con la aplicación portal principal, ni la administración central. Naturalmente, No sabíamos cuál de los dos (Enebro o hotfix) sería el tema, Aunque sospechaba fuertemente el hotfix, pensando que no habíamos instalado bien.

Resultó que Sabina tenía algún tipo de ajuste de compresión. Uno de los figuras vestidas encima de la red grupo dio vuelta salir. Resolvió nuestro problema.

Esto no es la primera vez que la compresión ha sido la causa de un problema de SharePoint para mí. Compresión de IIS afectado una 3ro herramienta de la fiesta de la buena gente en la fábrica la Red Dot para IE 6 navegadores (IE 7 navegadores trabajados sin dificultad).

Por lo tanto, Añadir "compresión" a la lista de riesgos.

</final>

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

Etiquetas de Technorati: ,

Pensando en cambiar de plataforma de blogs

Comencé en mi carrera"blogging" utilizando la plataforma de Microsoft y ha sido bueno para mí. Es fácil de publicar, hay buenas opciones y widgets para administrar su "espacio", almacenamiento web decente etc..

Sin embargo, Realmente sólo caí en la solución de MS casi sin planificación. Que solo llama para mí evaluar donde estoy y donde voy, en términos de una plataforma de blogs. También hay dos limitaciones importantes que me molestan ahora vis-á-vis derecho Windows Live Spaces.

Primero, No puedo conseguir muy buenas estadísticas. Hay estadísticas pero el detalle es a menudo truncado y no presentado de una manera que permite cualquier tipo de análisis. Allí no hay capacidad de clasificación o de exportación. Tengo muchas ideas de blog basados en el tipo de información de personas (o especialmente incapaces de encontrar) cuando buscan mi blog. Es muy difícil de utilizar espacios de vida para.

Segundo, No parece ser ningún mecanismo "monetizar" un blog de windows live space. En realidad, con el fin de deshacerse de los anuncios de MS (de los cuales no beneficiar), Necesito realmente pagar Microsoft. (Por lo menos, Eso es como lo entiendo; He sido incapaz de conseguir respuestas definitivas a esto y preguntas como).

Ahora que tengo un patrón establecido y un conjunto de hábitos blogging, Quiero evaluar otras opciones. He hecho algunas investigaciones y hay un montón de opciones, Pero tengo curiosidad sobre lo que otras personas, particularmente otros en la comunidad de SharePoint (como lectores o bloggers), como usar.

Si te interesa este tema y tienes una opinión o están dispuestos a compartir su experiencia, por favor dejar un comentario o enviarme un email directamente.

Gracias!

<final />

Etiquetas de Technorati:

Envíos de correo electrónico de SharePoint Designer ???? en un correo electrónico

En ocasiones pedir a los usuarios del Foro: ¿Por qué pone SharePoint Designer ???? en mi correo electrónico en lugar de un valor de campo?

Una razón que esto ocurre es porque la variable que hace referencia es null.

Esto puede ocurrir porque intenta hacer referencia a un campo del elemento actual"" pero el usuario nunca entró un valor en ese campo de formulario.

<final />

Etiquetas de Technorati:

Comparar / Prueba para las fechas en blanco en el flujo de trabajo de SharePoint Designer

Escenario: En un flujo de trabajo de SharePoint Designer, es necesario determinar si un campo de fecha está en blanco.

Problema: SPD no proporciona un método directo para comparar las fechas para que no sea una fecha. No se puede crear una condición como esta: "Si [DateField] es igual a en blanco".

Solución: Convertir la fecha a una cadena. Utilizar comparación de cadenas para determinar si la fecha está en blanco.

Capturas de pantalla:

Las capturas de pantalla siguientes muestran cómo hacerlo. En este escenario, un campo de un elemento, "Permisos ambientales:Primera fecha de recordatorio de permiso", se presenta y el flujo de trabajo se dispara en respuesta.

imagen

imagen

Notas:

Cuando traté de este, Me sorprendió gratamente saber que funciona. Yo estaba preocupado de que SharePoint Designer puede no permitir la asignación de cadena (Variable:StringReminderDateDate) pero le permitía.

Estaba también preocupado que permite, el valor puede ser nulo y cualquier golpe hasta el WF en tiempo de ejecución o tal vez aumente la temperatura global 1/2 un grado, pero esas preocupaciones eran infundadas.

</final>

Etiquetas de Technorati:

Bar es todavía bastante alto para extender MOSS

Hoy en día, Estuve trabajando con un cliente y que describe cómo modificar el elemento web de consulta de contenido y mostrar bits adicionales de información de un tipo de contenido.

"Primero., configurar el CQWP para conectarse a sus fuentes de datos, a continuación, exportarlo a su estación de trabajo, modificar <CommonViewFields>, cargar, Retire el original y ahora es ' preparado’ para mostrar las otras columnas. Siguiente, Abre SharePoint designer, Navegue a la raíz de la colección de sitio y localizar ItemStyle.xsl. Copia una de las plantillas como punto de partida útil. Volver atrás y modificar la CQWP para hacer uso de esta nueva plantilla. Finalmente, modificación de la plantilla para presentar sus nuevos campos! (No se olvide de comprobar que en tanto que otros usuarios puede ver los resultados)."

Está todo muy claro para mí (y la mayoría de los dos tipos de desarrolladores de SharePoint) ¿Qué está pasando y lo que está muy bien, realmente, que los aspectos de recuperación de datos de la CQWP son tan bien separado de los aspectos de presentación de datos. Pero, No es tan fácil de explicar, ¿es?

<final />

Etiquetas de Technorati: ,

Mostrar contenido consulta Web parte resultados en una cuadrícula / Tabla

Introducción y objetivo

Fuera de la caja, MOSS’ Elemento Web consulta de contenido (CQWP) muestra los resultados en formato de lista, similar a resultados de búsqueda. También es posible mostrar los resultados en un formato de cuadrícula (i.e. Formato de tabla HTML). Formatos de cuadrícula son mejores en algunas circunstancias. Describo cómo lograr ese efecto en el presente artículo.

Escenario de negocio

He trabajado con un cliente en una implementación MOSS de toda la empresa. Hemos diseñado su taxonomía que proyectos son ciudadanos de primera clase en la jerarquía y tienen su propio sitio de nivel superior. Gerentes de proyectos mantienen una lista de singleton de información Resumen del proyecto, como título, presupuesto, fecha de terminación prevista, presupuesto restante y otros campos de tipo Resumen. Por "singleton" Me refiero a una lista personalizada de SharePoint garantizada que contiene sólo un elemento. Manera simplista, este aspecto:

imagen

El enfoque técnico es lo mismo como se describe aquí (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). La CQWP usa una transformación XSL para emitir HTML para el navegador para representar.

Siempre preveo el resultado antes de zambullirse en el XSL porque XSL es una pesadilla. Aquí está mi resultado deseado:

imagen

HTML así genera ese resultado:

<HTML>
 <cuerpo>
 <Centro>
 <mesa frontera= 1>

<!-- Etiquetas:>
 <TR bgcolor= azul>
 <TD><fuente Color= blanco><b>Nombre del proyecto</b></fuente></TD>
 <TD alinear= a la derecha><fuente Color= blanco><b>Fecha completa</b></fuente></TD>
 <TD alinear= a la derecha><fuente Color= blanco><b>Presupuesto</b></fuente></TD>
 <TD alinear= a la derecha><fuente Color= blanco><b>Gasto real</b></fuente></TD>
 <TD><fuente Color= blanco><b>Estado general</b></fuente></TD>
 </TR>

<TR>
 <TD>Sala de ordenadores Re-cablea.</TD>
 <TD alinear= a la derecha>02/01/08</TD>
 <TD alinear= a la derecha>22,500.00</TD>
 <TD alinear= a la derecha>19,000.00</TD>
 <TD>En progreso</TD>
 </TR>

<TR>
 <TD>Servidores de provisión para actualización de SQL</TD>
 <TD alinear= a la derecha>04/01/08</TD>
 <TD alinear= a la derecha>7,500.00</TD>
 <TD alinear= a la derecha>0.00</TD>
 <TD>Planeado</TD>
 </TR>

</mesa>
 </Centro>
 </cuerpo>
</HTML>

Enfoque

Siga estos pasos para crear la red:

  1. Identificar los componentes de la red (filas o columnas).
  2. Definir y crear columnas de sitio necesario.
  3. Crear sub sitios para los proyectos y las listas de singleton.
  4. Agregar el CQWP a una página web y configurar para buscar tus listas.
  5. Modificar XML del CQWP a recoger las columnas adicionales.
  6. Modificar el XSL para generar una tabla.

Me voy a concentrar en el número seis. Los números uno a través de cuatro son directa y algo que ya ha hecho cualquier usuario CQWP. Número cinco ha sido documentado por otros incluyendo este exhaustivo artículo cargado de captura de pantalla de MSDN aquí (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) blog de Heather Solomon y aquí (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Tuercas y pernos

Iniciar y ejecutar pasos del uno al cinco, según la documentación de MSDN y artículo de Heather Solomon.

En este punto, ha agregado su CQWP a la página y tienes tu <CommonViewFields> configurado según sea necesario.

Siguiendo los pasos habituales, Estos resultados intermedios:

1. Crear un tipo de contenido, una lista personalizada templatized para ese tipo de contenido y dos sitios. Aquí es el tipo de contenido:

imagen

Aquí está la estructura del sitio:

imagen

2. Añadir el CQWP después de crear mi proyecto subsitios y singleton listas Resumen proyecto:

imagen

3. Añadir toda la información adicional que quiero mediante la <CommonViewFields>:

        <propiedad nombre="CommonViewFields" tipo="cadena">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</propiedad>

Tenga en cuenta que tenía que guardar todos los campos de propiedad sobre una línea o no funcionaría. (CQWP me diría que la consulta no devuelva ningún elemento).

4. En este punto, Estamos listos para ir más allá del artículo de MSDN y tirón en sobre artículo de Heather Solomon. Seguir sus pasos a partir de cerca de paso #5 para crear una personalizada / unghosted versión de ItemStyle.xsl. Sigo el Consejo de Heather, a través de paso 11 a estos resultados intermedios:

4.1: Nombre mi Plantilla XSL como sigue:

<XSL:nombre de la plantilla = "Grid" fósforo = "fila[@Style = 'Red']" modo = "itemEstilo">

También ligeramente le sugirió modificar <XSL:para cada …> mediante la adición de un <BR /> etiqueta para proporcionar un listado limpiador:

    <XSL:para cada Seleccione="@*">
      P:<XSL:valor de Seleccione="nombre()" /><BR/>
    </XSL:para cada>

4.2: Modificar el elemento web, ir a la apariencia y seleccione mi Grid"" estilo:

imagen

Aplicar el cambio y aquí está el resultado:

imagen

De lo anterior podemos ver que los campos que queremos (Nombre del proyecto, gasto, estado, etc.) están disponibles para nosotros cuando emitimos el HTML. No sólo, pero vemos los nombres por los cuales debemos referencia esas columnas en el XSL. Por ejemplo, referenciamos el estatus del proyecto como "Project_x005F_x0020_Name".

En este punto, Partimos del blog de Heather y de los hombros de los gigantes, Añadir mi propia poco.

ContentQueryMain.xsl

NOTA: Cuando haga cambios a tanto ContentQueryMain.xsl como ItemStyle.xsl, es necesario comprobar que los archivos vuelve a antes de usted ver el efecto de los cambios.

Para fines de fabricación de rejilla, MOSS utiliza dos diferentes archivos XSL para generar los resultados que vemos de un CQWP. Para generar el bit anterior de salida, modificamos el ItemStyle.xsl. MOSS utiliza otro archivo XSL, ContentQueryMain.xsl a en conjunto con el ItemStyle.xsl para generar código HTML. Como su nombre lo indica, ContentQueryMain.xsl es el principal"" XSL que controla el flujo general de traducción. Recorre en iteración todos los elementos encontrados y los pasa uno a uno a plantillas en ItemStyle.xsl. Modificaremos el ItemStyle.xsl para generar la apertura <mesa> etiqueta antes de emitir la primera fila de datos y el cierre <mesa> etiqueta después de la emisión de la última fila. Para lograr esto, ContentQueryMain.xsl modificado para pasar dos parámetros a nuestra red"" plantilla de ItemStyle.xsl, "última fila" y "fila actual". ItemStyle.xsl usa estos para emitir condicionalmente las etiquetas necesarias.

Utilizando la técnica de Heather Solomon, que busque ContentQueryMain.xsl. Se encuentra en el mismo lugar que el ItemStyle.xsl. Esta captura de pantalla debe ayudar a:

imagen

Tenemos que hacer los siguientes cambios:

  • Modificar una plantilla xsl, "CallItemTemplate" que realmente invoca nuestra plantilla cuadrícula en ItemStyle.xsl. Pasaremos dos parámetros a la plantilla de cuadrícula por lo que tendrán los datos que necesita para generar condicional de apertura y cierre <mesa> Etiquetas.
  • Modificar otro poco de ContentQueryMain.xsl que se llama el "CallItemTemplate" pasar un "LastRow" parámetro así LastRow puede transmitirse a nuestra plantilla de cuadrícula.

Ubique la plantilla llamada "OuterTemplate.CallItemTemplate" identificada por la cadena:

  <XSL:plantilla nombre="OuterTemplate.CallItemTemplate">

Vuelva a colocar la plantilla entera como sigue:

  <XSL:plantilla nombre="OuterTemplate.CallItemTemplate">
    <XSL:param nombre="CurPosition" />

    <!--
      Añadir el "LastRow" parámetro.
      Sólo la usamos cuando el elemento style pase en "Grid".
    -->
    <XSL:param nombre="LastRow" />

    <XSL:Elija>
      <XSL:Cuando prueba="@Style = 'NewsRollUpItem'">
        <XSL:Aplique-plantillas Seleccione="." modo="itemEstilo">
          <XSL:con-param nombre="EditMode" Seleccione="$cbq_iseditmode" />
        </XSL:Aplique-plantillas>
      </XSL:Cuando>
      <XSL:Cuando prueba="@Style = 'NewsBigItem'">
        <XSL:Aplique-plantillas Seleccione="." modo="itemEstilo">
          <XSL:con-param nombre="CurPos" Seleccione="$CurPosition" />
        </XSL:Aplique-plantillas>
      </XSL:Cuando>
      <XSL:Cuando prueba="@Style = 'NewsCategoryItem'">
        <XSL:Aplique-plantillas Seleccione="." modo="itemEstilo">
          <XSL:con-param nombre="CurPos" Seleccione="$CurPosition" />
        </XSL:Aplique-plantillas>
      </XSL:Cuando>

      <!--
              Pasar la posición actual y lastrow a la plantilla de itemstyle.xsl de red.
              ItemStyle.xsl que va a utilizar para emitir al aire libre y cierre <mesa> Etiquetas.
      -->
      <XSL:Cuando prueba="@Style = 'Grid'">
        <XSL:Aplique-plantillas Seleccione="." modo="itemEstilo">
          <XSL:con-param nombre="CurPos" Seleccione="$CurPosition" />
          <XSL:con-param nombre="Duran" Seleccione="$LastRow" />
        </XSL:Aplique-plantillas>
      </XSL:Cuando>

      <XSL:de lo contrario>
        <XSL:Aplique-plantillas Seleccione="." modo="itemEstilo">
        </XSL:Aplique-plantillas>
      </XSL:de lo contrario>
    </XSL:Elija>
  </XSL:plantilla>

Los comentarios describen el propósito de los cambios.

Claro, el "OuterTemplate.CallItemTemplate" se llama sí mismo de otra plantilla. Localice esa plantilla buscando esta cadena de texto:

<XSL:plantilla nombre="OuterTemplate.Body">

Desplazarse por las instrucciones en OuterTemplate.Body e introduzca el parámetro LastRow como sigue (se muestra como un comentario en cursiva):

<XSL:plantilla de llamada nombre="OuterTemplate.CallItemTemplate">
  <XSL:con-param nombre="CurPosition" Seleccione="$CurPosition" />
  <!-- Inserta el parámetro LastRow. -->
  <XSL:con-param nombre="LastRow" Seleccione="$LastRow"/>
</XSL:plantilla de llamada>

Después de todo esto, por fin tenemos cosas configuradas correctamente para que nuestro ItemStyle.xsl puede emitir <mesa> Etiquetas en el lugar correcto.

ItemStyle.Xsl

NOTA: Nuevo, Check-in ItemStyle.xsl después de hacer los cambios para que veas el efecto de esos cambios.

Aquí tenemos dos tareas:

  • Reemplazar toda la plantilla de cuadrícula. Usted puede copiar/pegar desde abajo.
  • Añadir algunos mumbo jumbo fuera de la definición de plantilla que permite "formatcurrency" plantilla para trabajo. (Sabes que tengo una manija tenue XSL).

Primero, cerca de la parte superior de ItemStyle.xsl, Añadir la siguiente línea:

  <!-- Algunas tonterías que permite mostrar los E.E.U.U.. moneda. -->
  <XSL:formato decimal nombre="personal" dígito="D" />

  <XSL:plantilla nombre="Por defecto" partido="*" modo="itemEstilo">

Nota que agregué directamente antes del <XSL:nombre de la plantilla = "Default" …> definición.

Siguiente, volver a nuestra plantilla de cuadrícula. Reemplazar toda la plantilla de cuadrícula con el código siguiente. Fondo es comentó, pero no dudes en escribirme o dejar comentarios en mi blog si tienes preguntas.

  <XSL:plantilla nombre="Red" partido="Fila de[@Style = 'Grid']" modo="itemEstilo">

    <!--
      ContentMain.xsl pasa CurPos y último.
      Utilizamos estos emitir condicionalmente el abierto y cierre <mesa> Etiquetas.
    -->
    <XSL:param nombre="CurPos" />
    <XSL:param nombre="Duran" />

    <!-- Las siguientes variables son sin modificar desde el ItemStyle.xsl estándar -->
    <XSL:variable nombre="SafeImageUrl">
      <XSL:plantilla de llamada nombre="OuterTemplate.GetSafeStaticUrl">
        <XSL:con-param nombre="UrlColumnName" Seleccione="'ImageUrl'"/>
      </XSL:plantilla de llamada>
    </XSL:variable>
    <XSL:variable nombre="SafeLinkUrl">
      <XSL:plantilla de llamada nombre="OuterTemplate.GetSafeLink">
        <XSL:con-param nombre="UrlColumnName" Seleccione="'LinkUrl'"/>
      </XSL:plantilla de llamada>
    </XSL:variable>
    <XSL:variable nombre="DisplayTitle">
      <XSL:plantilla de llamada nombre="OuterTemplate.GetTitle">
        <XSL:con-param nombre="Título" Seleccione="@Title"/>
        <XSL:con-param nombre="UrlColumnName" Seleccione="'LinkUrl'"/>
      </XSL:plantilla de llamada>
    </XSL:variable>
    <XSL:variable nombre="LinkTarget">
      <XSL:Si prueba="@OpenInNewWindow = 'True'" >_blank</XSL:Si>
    </XSL:variable>

    <!--
      Aquí definimos una variable, "tableStart".  Contiene el código HTML que usamos para definir la apertura de la mesa, así como las etiquetas de columna.  Tenga en cuenta que si CurPos = 1, incluye el código HTML en una etiqueta CDATA.
      De lo contrario, estará vacía.

      El valor de tableStart es emitidos cada vez ItemStyle se llama a través de ContentQueryMain.xsl.
    -->
    <XSL:variable nombre="tableStart">
      <XSL:Si prueba="$CurPos = 1">
        <![CDATA[
        <frontera de tabla = 1>
          <TR bgcolor = "blue">
            <TD><color de fuente = "blanco"><b>Nombre del proyecto</b></fuente></TD>
            <TD align = "right"><color de fuente = "blanco"><b>Fecha completa</b></fuente></TD>
            <TD align = "right"><color de fuente = "blanco"><b>Presupuesto</b></fuente></TD>
            <TD align = "right"><color de fuente = "blanco"><b>Gasto real</b></fuente></TD>
            <TD><color de fuente = "blanco"><b>Estado general</b></fuente></TD>
          </TR>
        ]]>
      </XSL:Si>
    </XSL:variable>

    <!--
      Otra variable, tableEnd simplemente define el cierre etiqueta de mesa.

      Como con tableStart, siempre es sido emitida.  Por esta razón se asigna su valor condicional en base a si nos hemos pasados la última fila por ContentQueryMain.xsl.
    -->
    <XSL:variable nombre="tableEnd">
      <XSL:Si prueba="$CurPos = $Last">
        <![CDATA[ </mesa> ]]>
      </XSL:Si>
    </XSL:variable>

    <!--
      Emitir siempre el contenido de tableStart.  Si no se trata de la primera fila pasada a nosotros por ContentQueryMain.xsl, entonces sabemos que su valor estará en blanco.

      Desactivar el escape porque cuando tableStart no en blanco, incluye HTML real que queremos que el navegador procesa.  Si no decimos el analizador XSL para desactivar la salida de escape, se van a generar cosas como"&lt;mesa&gt;" en vez de"<mesa>".
    -->
    <XSL:valor de Seleccione="$tableStart" Disable-output-escaping=""/>


    <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:valor de Seleccione="@Project_x005F_x0020_Name"/>
      </TD>

      <TD alinear="derecho">
        <XSL:valor de Seleccione="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD alinear="derecho">
        <XSL:plantilla de llamada nombre="FormatCurrency">
          <XSL:con-param nombre="valor" 
Seleccione="@Project_x005F_x0020_Budget"></XSL:con-param> </XSL:plantilla de llamada> </TD> <TD alinear="derecho"> <XSL:plantilla de llamada nombre="FormatCurrency"> <XSL:con-param nombre="valor" Seleccione="@Project_x005F_x0020_Expenses">
</XSL:con-param> </XSL:plantilla de llamada> </TD> <TD> <XSL:valor de Seleccione="@Project_x005F_x0020_Status"/> </TD> <!-- Lo siguiente es comentada para clarificar las cosas. Sin embargo, traerlo de vuelta y todo eso en un <TD> para ver su efecto. --> <!-- <div id = "linkitem" class = "item"> <XSL:Si la prueba = "string-length($SafeImageUrl) != 0 "> <div class = "imagen-área-left"> <a href = "{$SafeLinkUrl}" target = "{$LinkTarget}"> <IMG class = "imagen-ancho fijo" src = "{$SafeImageUrl}"
Alt = "{@ImageUrlAltText}"/> </un> </div> </XSL:Si> <div clase = "elemento de enlace"> <XSL:plantilla de llamada
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a href = "{$SafeLinkUrl}"
target = "{$LinkTarget}" title = "{@LinkToolTip}"> <XSL:valor de select = "$DispXSLTitle" /> </un> <div class = "description"> <XSL:valor de select="@Description" /> </div> </div> </div>
--> </TR> <!-- Emiten el cierre etiqueta de mesa. Si no estamos en la última fila, Esto será en blanco. --> <XSL:valor de Seleccione="$tableEnd" Disable-output-escaping=""/> </XSL:plantilla> <XSL:plantilla nombre="FormatCurrency"> <XSL:param nombre="valor" Seleccione="0" /> <XSL:valor de Seleccione='formato de número($valor, "$DDD,DDD,DDD.DD", "el personal")' /> </XSL:plantilla>

Pantallas de entrada de datos estándar de WSS/MOSS no admiten desplegables en cascada (o otro intra-comunicación)

ACTUALIZACIÓN (04/2008): Esta entrada de blog gran muestra un enfoque de javascript buena base para este problema: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

ACTUALIZACIÓN II: (04/2008): Esta entrada de blog parece prometedora, así: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Varias veces por semana, Si no diario, usuarios del Foro describen un requisito que normalmente se sufragarían mediante desplegables en cascada. Por ejemplo, Tengo dos controles de lista desplegable:

  • Lista de los Estados Unidos. Estados
  • Lista de los Estados Unidos. ciudades.

Como proveedores responsables de IU, Queremos operar así:

  • Paul selecciona a los Estados Unidos. Estado en el menú desplegable.
  • Esto hace que las ciudades desplegable para filtrar sólo las ciudades que pertenecen al estado seleccionado.
  • Paul selecciona una ciudad de esta lista filtrada.

No hay fuera de la caja soporte para esta característica. En realidad, no existe compatibilidad para cualquier tipo de comunicación intra-forma directa OOB. Esto incluye programación oculta/activación/desactivación de campos en respuesta a los cambios de campo en el formulario.

El verdadero objetivo de este artículo para describir posibles soluciones y estas son las opciones como los conozco:

  1. Desarrollar un tipo de columna personalizada. Como un desarrollador de columna personalizado, Usted tiene el control total sobre el mundo"" de la columna personalizada. Puede implementar una cascada descendente de esa manera.
  2. Considere el uso de flujo de trabajo. En algunos casos, que desea asignar automáticamente un valor al campo base en el valor de otro campo. En este caso, normalmente trata de utilizar una columna calculada, Pero algunas veces, sólo no hacer el trabajo. Flujo de trabajo de SharePoint Designer es una alternativa relativamente administrar respetuoso a cayendo en código y visual studio. Si vas a esta ruta, ser consciente del tema abordado por en este artículo (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Controladores de eventos: Como flujo de trabajo, se trata de una solución después de los hechos. El controlador de eventos es un ensamblado de .NET (C#, VB.NET) a que SharePoint pasa control. El objeto de que desarrollar tiene acceso a los datos de la lista (y el modelo de objeto entero) y puede hacer cualquier cálculo necesario.
  4. Usar SharePoint Designer para crear formularios personalizados. No tengo experiencia directa con este enfoque, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Rodar su propia función de entrada de datos ASP.NET (como una página web independiente o como un elemento web) en su lugar.

Si alguien sabe otras o mejores opciones, por favor enviar un comentario y actualizaré el cuerpo de este post.

<final />

Etiquetas de Technorati:

Sí/No (casilla de verificación) filtrado en el elemento Web consulta de contenido

Para filtrar una consulta para el Sí/No casilla titulada "PG hito", configurar CQWP como este:

imagen

Esta es otra de las preguntas obvias-una vez-le-saber-TI pero hard-to-find-an-answer-to: Cómo filtrar un Yes/ninguna casilla de verificación Usar el elemento web consulta de contenido.

El primero resultados de búsqueda Encontrar utilizando el término de búsqueda "filtro consulta sí/no contenido web part" es totalmente equivocado, Así que pensé que podría poner esta ahí y ver si se puede sustituir el resultado incorrecto en los resultados típicos de.

Es muy fácil: Verdaderos valores = "1" y valores falsos no igual a "1" (muy retro, en realidad).

En el ejemplo anterior, Creé columna de sitio del tipo Sí/No" (casilla de verificación)" llamado "PG hito". He añadido a una biblioteca doc, subido unos documentos, establecer el valor de un par y probado.

<final />