Sin cesar de anidamiento <div> Etiquetas y jQuery

Esto me parece un tema tan extraños, No estoy seguro vale blogs acerca de, pero que nunca ha dejado de mi antes, así que aquí vamos Sonreír

Estoy elaborando un proyecto donde estoy tirando de algunos datos de una búsqueda, embalaje en un mensaje XML y, a continuación, ese XML en última instancia es transformado en HTML mediante XSLT.  Hay un montón de jQuery involucrados, un bit que implementa algunas funciones de tabulación.  Cuando hace clic en una ficha (realmente, un <div>), jQuery invoca .hide() y .show() en diferentes divs (la carga de la página inicial descargas todo el contenido por lo que en este caso no hay ninguna devoluciones).

Un montón de horas hace, la ficha conmutación lógica comenzó a comportarse de manera irregular y no mostrará uno de mis fichas.  Yo finalmente seguimiento es el hecho de internet explorer (por lo menos) pensaba que el <div> etiquetas anidadas mucho, mucho más profundo que pretende.Mostrar la barra de herramientas de desarrollador:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— mostrando finalmente cerró todo el camino aquí!

Por lo tanto, si hice un $("# Tab1Content").ocultar(), También podría ocultar Tab2 y nunca pude mostrar Tab2 si también no muestro Tab1.  Copia y pega el código visual studio y mostró todos del revestimiento del div hasta bien, al igual que se suponía que iban a estar haciendo, mirando como este:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

Golpearon la cabeza contra la pared durante un tiempo y notó que en el código HTML actual código estaba generando un montón de vacío <div> Etiquetas, como:

<cuerpo>

  <div id = "Tab1Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

  <div id = "Tab2Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

</cuerpo>

(Lo anterior es waaaaaaaaaaaay simplificada.  Las etiquetas div vacía son totalmente válidas. Algunos de mis <div> Etiquetas estaban llenos de contenido, pero no fueron muchos más.  Llegué a la realización que mi <XSL:para cada> directivas estaban emitiendo el formulario corto cuando las etiquetas div el xsl:no para cada ' encontrar ningún dato.  Obligó a un comentario HTML en la salida, como se muestra:

image

 

Después de hice, el div se alinearon bien y mi ficha conmutación empezó a trabajar.

Como siempre, Espero que esto ayude a alguien en una pizca.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Quick Fix: "El nombre de tipo de contenido '$ Resources:ReportServerResources … no puede contener … caracteres especiales”

Yo he sido pasar algún tiempo limpiar un SharePoint 2010 sitio y uno de los problemas de limpieza se refiere a un corrupto / incorrectamente instalado SQL Server Report Services cuestión.  El problema surgió cuando uno de mis colegas intentó guardar un sitio como plantilla y, a continuación, crear crear un nuevo sitio basado en esa plantilla.  Guardar operación funcionaba bien, pero cuando ella intentó crear el nuevo sitio, SharePoint aparece el siguiente mensaje de error:

Error

El nombre de tipo de contenido '$ Resources:ReportServerResources,DataSourceContentTypeName;' no puede contener: \ / : * ? “ # % < > { } | ~ & , dos periodos consecutivos (..), o caracteres especiales tales como una ficha.

Aquí es una tapa de pantalla:

 

image

Tuve un vistazo a los tipos de contenido en el sitio y encontré esto:

image

Los tipos de contenido son claramente insalubres.

Esta cuestión parece llegar a mucho en las Internets y no parece haber un único consenso sobre cómo resolverlo.  Encontré una tabla útil que asignan los nombres de tipo de contenido malo a nombres de buen tipo contenido aquí: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Actualiza manualmente les así:

image

(BrightStarr el nombre es evidentemente opcional, pero no te duele Sonreír )

Esto me permitió crear una nueva plantilla y no rompe nada en los otros sitios, incluyendo algunas cosas de PerformancePoint Server que estaban trabajando un grupo de personas completamente diferente.  Entonces fui capaz de crear un nuevo sitio en la plantilla.  Éxito!

No estoy seguro de que esto es un 100% solución, pero me metió y todos los involucrados pasado este molesto error.  Si encuentro algo nuevo, Voy a publicar una actualización.  Mi nerviosismo surge del hecho de que estos nombres no deben equivocarse en primer lugar y fijando el nombre para mostrar, No estoy tocando el nombre interno. 

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Una causa por "el creador de este fallo no especificó una razón.”

Yo he estado haciendo un montón de trabajo con SharePoint search últimamente y específicamente en la clase de KeywordQuery, propiedades y métodos.

Si desea que el conjunto de resultados a devolver resultados más allá de los sospechosos habituales (ver aquí), se agrega a la colección de SelectedProperties, como en:

myKeywordQuery.SelectProperties.Add("xyzzy");

Muchas gracias y una punta del sombrero a Corey Roth y Esta entrada de blog enormemente útil (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

En mi caso, "xyzzy" no es realmente una propiedad administrada.  Cuando agregado a SelectedProperties de todas formas, SharePoint tiró uno de mi favorito nunca excepciones de tiempo de ejecución:

"El creador de este fallo no especificó una razón".

Me gusta especialmente la capital "R" en la razón.  Esto me suena como el.NET equivalente de"No tengo ninguna boca, y yo debo gritar.”

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Referencia práctica: Resultados predeterminados de búsqueda KeywordQuery

Cuando se invoca la ejecución() método en un KeywordQuery, puede crear un ResultTable basado en ResultType.RelevantResults.  Este fragmento de código ilustra lo que quiero decir:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

La tabla resultante tendrá las siguientes columnas de información: 

WorkId
Rango
Título
Autor
Tamaño
Ruta de acceso
Descripción
Escribir
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Deriva esta lista un SharePoint 2010 medio ambiente, Enterprise edition.  Esperemos que será útil a alguien en el futuro.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Uno de los motivos: "Error al extraer el archivo cab en la solución”

Mientras trabajaba en un elemento web de visual studio proyecto hoy, Hice una re-org menor de algunos archivos para poner en la carpeta _layouts como parte del proceso de implementación. Específicamente, Nombre un archivo .js desde "TypeAhead.js" "TypeAhead(antigua).JS"  Plan de quitarla tan pronto como su sucesor "TypeAhead.js" resulta correcto.  Esto parecía:

image

Esto causó inmediatamente un problema con visual studio cuando trató de implementar el proyecto:

Error en el paso de implementación Agregar solución: Error al extraer el archivo cab en la solución.

Resulta que no debería poner un paréntesis en nombres de archivo.  Me quitaron el paréntesis y que resolvió el problema.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Aún más jQuery–Cambiar el tamaño de un ejemplo de imagen

Heredé un elemento web de proveedor antiguo del cliente y tiene un problema de tamaño de imagen.  Las imágenes deben ser 60×50 pero por alguna extraña razón, el proveedor original les obligó a 42×42, para que su aspecto aplastados:

 

Buena imagen

Mala imagen

Aquí es el marcado (algo simplificado):

<tabla clase = 'outlook extendida'>
  <THEAD>
    <TR>
      <TH  ancho = 100′>3 Martes</TH>
    </TR>
  </THEAD>

  <tbody>
    <clase TR = 'Previsión'>
      <anchura TD = 100′>
        <UL>
          <clase de Li = 'alto'>Alta: 72&DEG;F</Li>
          <clase de Li = 'baja'>Baja: 44&DEG;F</Li>
          <clase de Li = 'condición'>Soleado
            <img src =’
http://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/en/Trans/cond007.png’ anchura = 42’ altura = 42’ Alt =” />
          </Li>
        </UL>
      </TD>
    </TR>

  </tbody>

</mesa>

Se tenga en cuenta que aunque el camino a la propia imagen muestra la dimensión correcta (60×50) el vendedor original lo forzó en 42×42.  ¿Por qué?  Loco.

De todos modos, Yo quería una solución rápida y fácil a este problema y me volví a jQuery.  El truco era localizar todos los adecuados <IMG> Etiquetas.  No quiero tontear con cualquier otras etiquetas img (de los cuales hay muchos).  Un poco de jQuery hizo el truco:

<la escritura de tipo = text/javascript"" src ="http://Ajax.googleapis.com/Ajax/libs/jQuery/1.5/jQuery.min.js"></secuencia de comandos>

<tipo de secuencia de comandos = "text/javascript">
     $(documento).listo(función () {

         $(' li.condition > IMG').cada(función (índice, artículo)
           
{
             $(artículo).CSS("anchura", "60"); 
             $(artículo).CSS("altura", "50");
            });
     }); // carga de documento
</secuencia de comandos>

La colección encuentra ese trozo de código <Li> Etiquetas cuya clase es "condición" y <IMG> a los niños.  Luego itera a través de todo eso.  Trabajó como un encanto.

Yo probablemente pudiera racionalizarlo, Pero nunca fui a la clase de tipo unix que resolvió π Para 18 precisión de dígitos con sed y awk y yo no soy ese tipo si jQuery o tipo Sonreír.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Analizar XML con LINQ

Este es un ejemplo rápido mediante LINQ para analizar algunos  XML y obtener en el dulce, dulce atributos en ella.

Aquí está el código XML desea analizar:

<?XML version = "1.0" Encoding = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout nombre = "xyzzy">
      <Fichas>
        <Ficha TabOrder = "1" TabLabel = "x" SharePointContentType = "un" AdditionalConstraints = "ac1" />
        <Ficha TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Fichas>
    </PageLayout>

    <PageLayout nombre = "xyzzy2">
      <Fichas>
        <Ficha TabOrder = "100" TabLabel = "x" SharePointContentType = "un" AdditionalConstraints = "ac1" />
        <Ficha TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Ficha TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Fichas>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Quiero acumular algunas fichas en tiempo de ejecución al analizar lo anterior.  Mis fichas dependen de un diseño de página.  Si el nombre del diseño de mi página es "xyzzy2", a continuación, quiero obtener fichas 100, 101 y 103 (las fichas <PageLayout nombre = "xyzzy2">).

Aquí está el LINQ que hace:

var allTabs =
              de p en
                  XElement.Parse(theXmlToParse).
                 
Elementos("PageLayouts").
                  Elementos("PageLayout")
              donde (p.Attribute("nombre").Value.Equals("xyzzy2"))
              m en p.Elements("Fichas").Elementos("Ficha")
              Seleccione m;

          Results.Text = string.Vacío;

          foreach (var aTab en allTabs)
          {
              Results.Text =
                  "El orden de tabulación: " + aTab.Attribute("TabOrder").Valor + " |" +
                  "Ficha etiqueta: " + aTab.Attribute("TabLabel").Valor + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Valor + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Valor + "r";
          }

En la anterior, la variable "theXmlToParse" es una variable de cadena, pero se puede utilizar la carga() método sobre una secuencia si te gusta.

"Resultados" son una etiqueta en un formulario web y cuando se ejecuta este código, este aspecto:

SNAGHTML11cd2e7c

No he elaborado de cómo ordenar los resultados todavía, así que te dejo para un futuro blog.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery y los usuarios anónimos

Activado el acceso anónimo en mi sitio para probar un elemento web de búsqueda que he evolucionado y ninguna gran sorpresa, bastante no funcionó.  Acceso anónimo es casi siempre un desafío para mí.

En este caso, por alguna razón no ejecuta la búsqueda inicial.  Debo decir que fue funcionamiento pero no volvía a ningún resultado.  Estoy usando el KeywordQuery para la visualización inicial.

Hice una búsqueda rápida y esta entrada de blog por"sowmyancs"surgió rápidamente: “SharePoint 2010 Búsqueda: no muestra ningún resultado para usuarios anónimos?”  Entrada de blog describe el problema desde fuera de la perspectiva de búsqueda de palabra clave de cuadro, pero el comportamiento fue similar a la mía: trabajó para los usuarios autenticados y para los usuarios anónimos, pero los usuarios anónimos no obtuvo ningún resultado. 

Seguí las instrucciones y bang!  Resolver mi problema.  No estoy seguro de lo que esto tendrá los efectos secundarios y pueden resultar un problema, pero el resultado a corto plazo es útil.

Haga clic en a través del blog:

image

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery y la propiedad HiddenConstraints

Yo he estado haciendo un poco de trabajo con el KeywordQuery objeto de SharePoint 2010 y haciendo uso de la HiddenConstraints propiedad.

No encontrar cualquier información inmediatamente útil sobre la propiedad, así que pensé que rápidamente sería anotar cómo he estado usando.

Como puedo decir, se trata de una restricción automática añadida a la consulta para que pueda ordenarla de Parque allí y no preocuparse.  Como tal, es sólo otra palabra clave (o conjunto de palabras clave) y los modificadores que se pueden escribir en a la interfaz de usuario cuando se realiza una búsqueda por palabra clave.  Aquí hay un ejemplo:

keywordQuery.HiddenConstraints = "ámbito de aplicación:\"Industry" ";

Puede agregar restricciones adicionales con un delimitador de espacio.

keywordQuery.HiddenConstraints = "ámbito de aplicación:\"Industry" defensa";

Lo anterior está diciendo en inglés, "ejecutar una consulta de palabra clave en busca de"defensa"y además, utilizar el alcance de la "Industria".

Aquí es otra forma de mirarlo:

image

Lo he estado utilizando para proporcionar un ámbito automático dependiente del contexto de un elemento web personalizado.  Cuando el usuario hace clic en una ficha y hace clic en un botón de búsqueda, la ficha dicta un ámbito de búsqueda determinado.  Funciona bien hasta ahora.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Ejemplo: XSLT crear HTML Href

He estado haciendo últimamente un poco de cosas XSL y pensaba sería poner juntos una muestra para mi referencia futura y que pueden ser de valor para todos nosotros hacer una vida en la internets XSLT-ers.

Considere el siguiente código XML:

<FdcSearchTabsCollection Count = "2">
  <Etiqueta de búsquedabuscarficha = "industria" SortOrder = "00" Label = "Industrias" SearchConstraints = "contenttype:Industria" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <Etiqueta de búsquedabuscarficha = "prácticas" SortOrder = "01" Label = "Prácticas" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

El siguiente fragmento de XSL generará una lista ordenada de fichas hrefs:

<XSL:Partido de plantilla = "FdcSearchTabsCollection" XML:Space = "preserve">
   
    <!– "Todos" ficha –>
    <a href = "javascript:ViewTab('Todo')">Ver todo</un>
   
    <!– Cada ficha individual –>
    <!– Recorrer todas las fichas y mostrar la correcta  enlaces. –>
    <XSL:for each select = "Búsquedabuscarficha">
      <XSL:tipo select="@SortOrder"/>

      …
      <a href = "javascript:ViewTab(‘{@ TabID}’)"><XSL:valor de select="@Label"/></un>
    </XSL:para cada>

    <BR /> 
   

   </XSL:plantilla>

Aquí es lo que parece en SharePoint:

SNAGHTML78aa2cb

 

 

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin