Archivo de la categoría: Desarrollo de SharePoint

Explicación simple: “Valor no caen dentro del rango esperado.”

ACTUALIZACIÓN: Un cartel anónimo dejó un gran comentario sobre los nombres de internos. Asegúrese de leer.

Cuando se trabaja con receptores de eventos y otro código que hace referencia a elementos de la lista de SharePoint mediante el modelo de objetos, A menudo hacer errores que generan este error en tiempo de ejecución:

Error al cargar y ejecutar receptor de eventos Conchango.xyzzyEventReceiver en xyzzy, Versión = 1.0.0.0, Cultura = neutral, PublicKeyToken = 0dc50a750396c3ac. Información adicional está por debajo de. : Valor no cae dentro del rango esperado.

Creo que esto es un error bastante genérico que es potencialmente formas diferentes. Sin embargo, una explicación simple es que yo estoy haciendo referencia a un campo incorrectamente. Si el nombre del campo "Fecha de vencimiento", Yo debo referencia como esta en un receptor de eventos:

propiedades.ListItem["Fecha de vencimiento"]

Cuando escribe incorrectamente o utilizar el caso equivocado al hacer referencia a la esfera, SharePoint genera el anteriormente mencionado error de tiempo de ejecución. Por ejemplo, Esto no es correcto:

propiedades.ListItem["fecha de vencimiento"]

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

Rápido & Fácil: Crear una carpeta y asignar a un tipo de contenido (O, Tienen los KPI y comen demasiado)

Con el fin de solucionar un problema KPI Escribí acerca de aquí, Hice algunas pruebas y descubrió el trabajo de ésa KPI contra carpetas con meta datos de la misma manera que trabajan contra los documentos o elementos de la lista. Probado creando un nuevo tipo de contenido basado en el tipo de contenido de carpeta y luego añade unos cuantos campos. He creado algunos indicadores y demostrado a mí mismo que KPI funciona como se esperaba. Esto fue noticia. No es perfecto, porque obtener el desglose de los KPI contra las carpetas no es exactamente lo que usted quiere. Esto no es demasiado inconveniente en mi caso porque 1) No sabía lo que los usuarios finales y 2) el desglose va a una carpeta. Haga clic en el nombre de carpeta y en el artículo. Es un par de clics en lugar de una, que no es el fin del mundo.

Esto fluyó muy bien con el trabajo que estaba haciendo. Estoy creando una carpeta para cada documento que llega cargado. Esto se hace vía un receptor de eventos. Como un resultado, es un pedazo de pastel para mantener el carpeta primaria meta datos en sincronía con los basada en KPI meta datos del archivo sí mismo desde la plomería ya está en marcha. This allows me to have my KPI’s and eat them too 🙂

He modificado el receptor de eventos para agregar la carpeta y luego establece el tipo de contenido de esta carpeta nueva para mi tipo de contenido personalizado Este KPI. Este pedacito de código hizo el truco:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Documentos").Subcarpetas;
  SPFolder addedFolder = srcFolders.Add(propiedades.ListItem.ID.ToString());
  SPContentTypeId kpiCT = Nuevo SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["ID de tipo de contenido"] = kpiCT;
  addedFolder.Item.Update();

Para localizar el ID de tipo de contenido actual, I acceder a ese tipo de contenido mediante la configuración del sitio y copiar/pegar desde la URL como se muestra:

imagen

</final>

Suscribirse a mi blog!

Etiquetas de Technorati: ,

Fácil y rápida: Obtener la SPFolder de un SPListItem en un receptor de eventos

Detesto admitirlo, Pero luché con este otro día. Mi receptor de evento necesita actualizar un campo de su carpeta principal. Poco muestra cómo hacerlo:

privada void UpdateParentFolder(SPItemEventProperties propiedades)
{

SPFolder thisItemFolder = properties.ListItem.File.ParentFolder;
thisItemFolder.Item["Estado de aprobación de ZZ"] = "Buenas noticias, todo el mundo!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

En este caso, Estoy trabajando con una biblioteca de documentos y las propiedades están viniendo de un evento ItemAdded.

El truco es que no se puede obtener la SPFolder del tema directamente desde el propio elemento (i.e. Propiedades.ListItem.Folder es null). En su lugar, ir a archivo asociado del elemento de la lista y conseguir la carpeta del archivo.

</final>

Suscribirse a mi blog!

Etiquetas de Technorati:

Sin embargo otro receptor de eventos depurar truco

Estoy seguro de que no soy la primera persona para llegar a esto. Sin embargo, No he notado que alguien publique un truco como esta desde que empecé prestando mucha atención a la comunidad en julio pasado. Por lo tanto, Pensé que sería publicarlo esta sugerencia de depuración rápida y fácil.

Estoy trabajando en un receptor de eventos que comenzaron a generar este error en la 12 colmena:

Error al cargar y ejecutar receptor de eventos Conchango.xyzzyEventReceiver en xyzzy, Versión = 1.0.0.0, Cultura = neutral, PublicKeyToken = blahbalhbalh. Información adicional está por debajo de. : Referencia a objeto no establecida como instancia de un objeto.

No sabía donde había introducido este fallo porque había hecho muchas cosas en uno de mis ciclos código/desplegar/test.

He intentado Esta solución para obtener mi pdb allí con la esperanza de SharePoint 12 colmena mostraría el seguimiento de pila, Pero no hubo suerte. No sé si es posible y si alguien no, por favor, hágamelo saber 🙂

Sé que es posible escribir sus propios mensajes de registro a la 12 colmena. Francamente, Quería algo un poco menos miedo y más rápido implementar.

Se me ocurrió que al menos pude obtener información básica traza por captura y re-throwing genéricos excepciones como esta:

  Intente {
    UpdateEditionDate(propiedades);
  }
  capturas (Excepción e)
  {
    tiro Nuevo Excepción("Dispatcher, UpdateEditionDate(): Excepción: [" + e.ToString() + "].");
  }

Esto se presentó en el 12 colmena thusly:

Error al cargar y ejecutar receptor de eventos Conchango.xyzzyEventReceiver en xyzzy, Versión = 1.0.0.0, Cultura = neutral, PublicKeyToken = blahblahblah. Información adicional está por debajo de. : Dispatcher, UpdateEditionDate(): Excepción: [System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto. en Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(Propiedades de SPItemEventProperties) en Conchango.xyzzyManagementEventReceiver.Dispatcher(Propiedades de SPItemEventProperties, Cadena eventDescription)].

Que me dio todo el detalle que necesitaba para rastrear ese problema y espero utilizarlo mucho en adelante.

</final>

Suscribirse a mi blog!

Solución: SPQuery no buscar carpetas

Esta última semana estaba implementando una "evolución" solución para un cliente que utiliza el BDC y SPQuery y tuvo alguna dificultad usando SPQuery contra una biblioteca de documentos que contiene carpetas. Línea inferior: asignar "recursiva" para el atributo de vista de la consulta.

Mi escenario:

  • El lunes, I subir un documento y suministrar algunos metadatos.
  • La semana siguiente, Subir un nuevo documento. Mucho de este nuevo documento metadatos se basa en el documento que subí el lunes (que llamamos el "documento maestro").
  • Hemos creado una fachada de servicio web que proporciona una interfaz de BDC respetuoso a la lista para que los usuarios pueden localizar fácilmente ese documento lunes mediante una búsqueda de título.
  • Una columna de datos BDC proporciona una interfaz de usuario amigable. (Esto es parte de mi intento de usar BDC para una columna de búsqueda más amigable).

El servicio final de fachada BDC usa una consulta como ésta para hacer la búsqueda:

 // Utiliza U2U herramienta para asistir en la generación de esta consulta CAML.
      oQuery.Query =
        "<Donde>";

      Si (titleFilter.Length > 0)
        oQuery.Query  =
          "  <Y>";

      oQuery.Query  =
        "    <Y>" +
        "      <GEQ>" +
        "        <FieldRef nombre =  "DocumentId" />" +
        "        <Tipo de valor =  "Text">" + minId + "</Valor>" +
        "      </GEQ>" +
        "      <Leq>" +
        "        <FieldRef nombre =  "DocumentId" />" +
        "        <Tipo de valor =  "Text">" + maxId + "</Valor>" +
        "      </Leq>" +
        "    </Y>";

      Si (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Contiene>" +
          "      <FieldRef nombre =  "Title" />" +
          "      <Tipo de valor =  "Text">" + titleFilter + "</Valor>" +
          "    </Contiene>" +
          "  </Y>";
      oQuery.Query  =
        "</Donde>";

Durante la etapa inicial de desarrollo, Esto funcionó muy bien. Sin embargo, Hemos introducido las carpetas en el directorio para resolver algunos problemas y de repente, mi selector de BDC no devolver ningún resultado. Un seguimiento hasta el hecho de que el SPQuery nunca devuelve ningún resultado. Utilizamos carpetas principalmente para permitir que varios archivos con el mismo nombre para subir pero con datos diferentes de la meta. Cuando el archivo es cargado, creamos una carpeta basada en ID del elemento de la lista y luego mover el archivo allí (Escribí acerca de eso aquí; Hemos tenido resultados mixtos con este enfoque, pero sobre todo el, está trabajando bien). El usuario no le importa acerca de carpetas y de hecho, realmente no entiendo que hay las carpetas. Hemos configurado todas las vistas de la biblioteca para mostrar los elementos sin carpetas.

Llegué a este problema dos veces como la aplicación técnica evolucionó y solucionado diferente cada vez. La primera vez, Que no estaba usando el operador CONTAINS en la consulta. Sin un operador contiene, Era capaz de resolver el problema especificando la vista en contructor de SPQuery. En lugar de utilizar el constructor predeterminado:

SPList Doc_olist = web.Listas["Documentos"];

SPQuery oQuery = Nuevo SPQuery();

En lugar de ello usé un constructor que especifica una vista:

SPList Doc_olist = web.Listas["Documentos"];

SPQuery oQuery = Nuevo SPQuery(oList.Views["Todos los documentos"]);

Eso resolvió el problema y empezamos a tener mis resultados.

Luego añadí el operador contiene en la mezcla y se rompió otra vez. Resulta que el operador CONTAINS, la medida en que te puedo decir, No funciona con la opinión de la misma manera que la una simple GEQ / Operadores LEQ. Hice algunas búsquedas y aprendió que ViewAttributes de la consulta debe establecerse en "Recursivo", como en:

oQuery.ViewAttributes = "Alcance = "Recursive"";

Resolvió el problema de contiene. En realidad, Esto también solucionar mi problema de búsqueda original y si había especificado la recursiva atribuyen la primera vez, No hubiera huido en el tema nuevo.

El hecho de que un SPQuery basado en vista funciona para algunos operadores (GEQ/LEQ) y no a otros (CONTIENE), junto con el hecho de que no parecen KPI ' s trabajar en todo documento que contiene la carpeta bibliotecas pistas para creer que SPQuery tiene algunos problemas de ortogonalidad.

Agradecimiento especial:

  • La buena gente de U2U y su herramienta de consulta.
  • Michael Hoffer es genial "aprender haciendo" entrada de blog, Comentarios y respuestas.

</final>

Suscribirse a mi blog!

Fallo de MOSS KPI? Indicador de lista ligada a la biblioteca de documentos con carpetas

ACTUALIZACIÓN 02/29/08: He resuelto este problema creando una carpeta y luego asignar a un tipo de contenido a la carpeta que tiene los meta datos para los KPI ' s. Describí un poco más detalladamente aquí.

Hemos implementado una solución técnica, donde los usuarios cargar documentos en una biblioteca de documentos. Un receptor de eventos crea un directorio y mueve el archivo a ese directorio (utilizando una técnica similar a lo que escribí sobre aquí). Que hemos atravesado con éxito alrededor de los posibles problemas causados por los receptores de eventos que renombrar archivos subidos (principalmente porque los usuarios nunca inician su documento haciendo clic en "nuevo" pero en su lugar crear a los documentos localmente y luego cargarlos).

Los metadatos de estos documentos incluyen un sí/No columna de sitio llamado "urgentes" y otra columna de sitio llamado "Status". Tenemos que cumplir con un requisito de negocio que muestra el porcentaje de "urgente" documentos cuyo estado es "Pendiente".

Esto es normalmente sencillo hacer y describió algo muy parecido a esto en el SharePoint Beagle con un montón de capturas de pantalla si te interesa.

En pocas palabras, Hice lo siguiente:

  • Crear una vista en la biblioteca de COD llamada "Pendiente".
  • Configurar la vista para ignorar la estructura de carpetas.
  • Crear una lista KPI.
  • Crear un indicador en la lista que apunta a la lib doc y "pendiente" vista.

Esto simplemente no funciona. El KPI muestra mi destino (por ejemplo:. cinco documentos urgentes) pero siempre muestra el número actual de documentos urgentes como cero. Paradójicamente, Si profundizar en los detalles, muestra los cinco documentos urgentes de la lista. He creado un escenario muy simple con dos documentos, uno en una carpeta y no. Aquí está la captura de pantalla:

imagen

La captura de pantalla anterior muestra claramente hay dos documentos en la vista, pero el valor"" es una. "CamlSchema" con documento en blanco Id está en la carpeta raíz y la otra está en una carpeta denominada "84".

Me parece a pesar de que usted especifique una vista, el KPI no honra la "Mostrar todos los elementos sin carpetas" configuración y en su lugar, se limita a la carpeta raíz.

Si estoy equivocado, por favor enviarme una línea o dejar un comentario.

</final>

Suscribirse a mi blog!

Etiquetas de Technorati:

Solución al problema: “FileNotFoundException” Con mi receptor de función.

Estaba trabajando en una función la semana pasada que añadiría algunos receptores de eventos a una instancia específica de la lista. (He mencionado un poco sobre ese receptor lista aquí).

Utilizando la línea de comandos, Pude instalar la característica con ningún error (pero véase más abajo para el error oculto). Cuando trató de implementar la función en el sitio, MOSS se quejó de una "FileNotFoundException" error. Esta entrada de blog describe cómo lo solucioné.

Este es el error que MOSS me mostró en el navegador web:

Característica ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ no se pudo instalar porque la carga de la unidad del receptor de sucesos "xyzzyFeatureReceiver_0" no se pudo: System.IO.FileNotFoundException: No se pudo cargar archivo o ensamblado ' xyzzyFeatureReceiver_0’ o una de sus dependencias. El sistema no puede encontrar el archivo especificado.
Nombre de archivo: ' xyzzyFeatureReceiver_0’
en System.Reflection.Assembly.nLoad(Nombre de archivo AssemblyName, Cadena codeBase, Pruebas assemblySecurity, Asamblea locationHint, StackCrawlMark& stackMark, ThrowOnFileNotFound Boolean, ForIntrospection Boolean)
en System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Pruebas assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean)
en System.Reflection.Assembly.InternalLoad(Cadena assemblyString, Pruebas assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean)
en System.Reflection.Assembly.Load(Cadena assemblyString)
en Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
AVS: Registro de enlace de la Asamblea esté apagado.
Para habilitar el registro de falla de enlace de Asamblea, establecer el valor del registro [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) Para 1.
Nota: Hay alguna penalización de rendimiento asociado con el registro de fracaso de Asamblea bind.
Para desactivar esta característica, eliminar el valor del registro [HKLMSoftwareMicrosoftFusion!EnableLog].

Solucionar problemas con Windows SharePoint Services.

Sé cómo deliberadamente causar ese error: No instale al ensamblado en la GAC. Pero, fue en la GAC. Normalmente instalar a ensamblados en la GAC arrastrándolas hasta la c:\carpeta windowsassembly explorador de windows. Nunca he sentido 100% cómodo hacerlo, porque siempre pensé que Gacutil existe por una razón … así que intenté. No hace ninguna diferencia.

He buscado en las Internets y encontré este post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

El cartel pasó a usar la misma broca de raíz del código (en el libro de WSS dentro de esta lista) así que esa fue una señal de esperanza. Sin embargo, la sugerencia de decorar el conjunto con un [Asamblea: ] Directiva no tiene sentido para mí. De todos modos lo probé y tenía razón. No hace ninguna diferencia.

Entonces me di cuenta que mi definición de la clase no era público. Le hice público y que no hizo ninguna diferencia.

Siguiente, Fui a la molestia de permitir que la "Asamblea bind fallo registro" (siguiendo las instrucciones útiles y precisas proporcionados) y esto es donde las cosas comenzaron a obtener interesantes. Ese registro me muestra que el tiempo de ejecución busca por todas partes en el servidor para mi montaje. Incluso parece ser buscando en mi botiquín. Pero … no busca en la GAC.

Puse en mi chaqueta de invierno e ir a buscar los Internets y encontrar que alguien ha tenido este problema también. La larga discusión en publicación peters apagado en nada y no encuentro una solución.

Muevo mi Asamblea en uno de los lugares que el registro afirma está buscando y hacer avanzar un poco más. Yo estoy recompensado con un nuevo error en el navegador cuando intento activar la función de:

Error al crear el objeto receptor de característica del conjunto "xyzzyFeatureReceiver_0", Escriba "Conchango.xyzzyFeatureReceiver" para la función b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Valor no puede ser nulo.
Nombre de parámetro: tipo
en System.Activator.CreateInstance(Tipo tipo, Privada booleano)
en System.Activator.CreateInstance(Tipo tipo)
en Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Solucionar problemas con Windows SharePoint Services.

Tiempo para un último viaje a las Internets!

Esta vez puedo saber, como era de esperarse lo suficientemente, que MOSS emite este error porque la Asamblea no está en la GAC.

Quiero sacar algo positivo de esto y tratar de sentir un poco orgullosos que he creado el Fugitivo de ensamblados MSIL, pero no funciona. Estoy molesto solo llano. Me encontré murmurando "huevo o la gallina" bajo mi aliento.

Finalmente decido punt. Crear un proyecto completamente nuevo y copiar/pegar el código del proyecto incredible-cloaked-from-the-GAC-assembly no trabajo sobre este nuevo proyecto. (Busco una bandera de compilación llamada algo así como "hide from enlace si instalado en el GAC" pero no puede encontrar uno).

Instalar la característica y activarlo y … funciona! Por lo tanto, Después de todo lo que, Básicamente tuve que ' reiniciar’ mi proyecto. Esta es otra razón por qué odio a equipos.

Aprendo algo útil de este. Había instalado características usando la línea de comandos stsadm todo el dia y la "-la fuerza" opción por costumbre. Por alguna razón, No utilizo la fuerza opción - cuando he instalado el nuevo proyecto. A esta hora, Hice realidad, realmente olvide copiar el montaje de este nuevo proyecto en la GAC. Como un resultado, Recibí esa FielNotFoundException"" error. A esta hora, I got it from stsadm, no cuando trató de activar la función vía el web browser. Por lo tanto, -fuerza realmente juega dos papeles. Le permite volver a instalar una característica existente. También le permite instalar una característica buggy que no puede trabajar en tiempo de ejecución mediante la supresión de los errores. Probablemente dice tanto en la ayuda en alguna parte pero nunca lo noté.

</final>

Etiquetas de Technorati: ,

Rápido & Fácil: Cambiar el nombre de archivo cargado mediante el modelo de objetos de SharePoint a través de un receptor de eventos

ACTUALIZACIÓN: Esto funciona, pero existen limitaciones significativas que se describen en los comentarios. Esto todavía puede ser útil en algunas circunstancias.

ACTUALIZACIÓN 2: En mi proyecto actual, los usuarios siempre subir documentos. Como un resultado, No ejecutar en un problema donde MS Word se está ejecutando y piensa que el archivo fue retitulado en él. Puso en marcha en un problema, "el archivo fue modificado por alguien" y esta solucionado por medio de una bandera de tipo semáforo simple. Los usuarios necesitan cambiar un campo de datos de la meta de su valor por defecto a algo más. El itemupdated() receptor busca un valor antes de realizar efectivamente el cambio de nombre y desde entonces, No he tenido ningún problema. Su kilometraje puede variar.

Tengo un requerimiento del cliente para cambiar el nombre de los archivos subidos a una biblioteca de documentos específica de conformidad con una Convención de nomenclatura particular. El API no proporciona un "cambio de nombre()" método. En su lugar, Utilizamos "MoveTo(…)". Aquí es un poco un mínimo del código para lograr esto:

 público reemplazar void ItemAdded(SPItemEventProperties propiedades)
        {
            SPFile f = properties.ListItem.File;

            f.moveTo(propiedades.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Sólo complicado es "propiedades. ListItem.ParentList.RootFolder.Url". El MoveTo() método requiere una dirección URL. Puré de puntos cadena me a la carpeta raíz de mi biblioteca del documento actual. Esto me permite evitar cualquier codificación dura en mi receptor de evento.

Esta es una versión más útil que hace lo mismo, pero se asigna el nombre del archivo a "Título":

 público reemplazar void ItemAdded(SPItemEventProperties propiedades)
        {
            DisableEventFiring();

            // Asignar el título de este tema con el nombre del propio archivo.
 // NOTA: Esta asignación debe realizarse antes de modificar el archivo en sí.
 // Llamar a update() en el SPFile parece invalidar las propiedades
 // algún sentido.  Actualizaciones a "título" no se pudo hasta que cambie (y actualización() llamar)
 // fueron trasladados en frente del cambio en el nombre de archivo.
            propiedades.ListItem["El título"] = properties.ListItem.File.Name;

            propiedades.ListItem.Update();

            SPFile f = properties.ListItem.File;

            // Obtener la extensión del archivo.  Necesitamos más tarde.
 cadena spfileExt = Nuevo FileInfo(f.Name).Extensión;

            // El nombre del archivo de ID del elemento de la lista y utilizar la extensión de archivo para mantener
 // esa parte intacta.
            f.moveTo(propiedades.ListItem.ParentList.RootFolder.Url +
                "/" + propiedades.ListItem["ID"] + spfileExt);

            // Cometer el movimiento.
            f.Update();

            EnableEventFiring();
        }

Punta rápido: Elemento Web consulta de contenido, XSL y valor de la columna de búsqueda

Tengo un nombre de columna en un tipo de contenido llamado "Inmobiliaria ubicación".

La columna es de tipo "búsqueda".

Yo he modificado <CommonViewFields> y ItemStyle.xsl para mostrar la columna.

Un simple <XSL:valor de seleccione =…> vuelta devuelve un valor interno que incluye datos de posición ordinal, como:

1;#Miami

Para obtener el valor de humanos-amistoso, usar xsl después de subcadena, como se muestra:

<XSL:Seleccione valuXSLf = "subcadena-después de(@ Real_x005F_x0020_Estate_x005F_x0020_Location,’#’)"></XSL:valor de>

Utilice esta técnica cuando se trabaja con valores de búsqueda de transformaciones XSL y necesita para obtener el valor de humanos-amistoso.

<final />

Etiquetas de Technorati: , ,

Fácil y rápida: Determinar el nombre de columna interior de una columna de sitio

ACTUALIZACIÓN: Jeremy Thake tiene su blog acerca de esto y poner un poco Código de una aplicación de consola muestra los nombres internos.

Estaba tratando de obtener una parte de consulta de contenido web para mostrar una fecha de vencimiento de una tarea y porque la etiqueta de pantalla es "una fecha de vencimiento", Supuse que el nombre de columna para utilizar en <CommonViewFields> es "Due_x0020_Date".

Mal!

El nombre de columna real en este caso era "DueDate".

¿Cómo lo encontré? Volver a leo Heather Entrada en el blog de Salomón sobre modificación de CQWP para mostrar más columnas de datos. Ella describe este proceso en el paso #13. Confía en él. Es correcto. Por lo menos, era correcto para mí. No espero al principio para otra columna con un nombre mucho más largo.

Digo "confiar en él" porque no confía en él y probablemente perdió cerca de dos horas empalmar mi cabeza contra la pared. Después decidí "DueDate" nombre, Quería añadir otro campo a <CommonViewFields>. Utilizando la técnica de Salomón, Me daba un nombre de columna como "XYZ_x0020_Project_x0020_Due_x00".

Pensé para mis adentros, es claramente un nombre truncado. Fui por delante y no truncada con ningún éxito. Finalmente utilicé el nombre aparentemente truncado y funciono.

Punta prima: Cuando yo estaba trabajando con el CQWP, Si he añadido un mal nombre interno para <CommonViewFields>, la CQWP me diría que la consulta no había regresado resultados. Pero, Si he añadido un tipo de datos para el nombre del campo, Devuelve un resultado. Agregando los datos tipo realmente enmascara un problema ya que estaba haciendo referencia a un campo inexistente. Pude agregarlo, Pero cuando traté de mostrar su valor, Siempre tengo un espacio en blanco.

Esto no ocultar el error:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Esto ocultar el error:

<CommonViewFields>Due_x0020_Date,Fecha y hora;</CommonViewfields>

</final>