Arxius de la categoria: Desenvolupament de SharePoint

Explicació senzilla: “Valor no cau dins de la gamma prevista.”

ACTUALITZACIÓ: Un cartell anònim va deixar un gran comentari sobre noms interns. Assegureu-vos de llegir-lo.

Quan es treballa amb auriculars d'esdeveniment i un altre codi que fa referència a elements de la llista del SharePoint mitjançant el model d'objecte, Jo sovint cometen errors que generen aquest error en temps d'execució:

Error en carregar i corrent d'auricular d'esdeveniment Conchango.xyzzyEventReceiver en xyzzy, Versió 1.0.0.0 de =, Cultura = neutral, PublicKeyToken = 0dc50a750396c3ac. Informació addicional està per sota. : Valor no cau dins el rang esperat.

Crec que això és un error bastant genèric potencialment causat moltes maneres diferents. No obstant això, una explicació senzilla és que estic referenciant un camp incorrectament. Si el nom del camp és "Data de venciment", Em cal referència a ell com això en un auricular d'esdeveniment:

propietats.Element de llista["Data de venciment"]

Quan em incorrectament o utilitzar el cas malament quan fa referència a l'àmbit, SharePoint genera el damunt esmentat runtime error. Per exemple, això està malament:

propietats.Element de llista["data de venciment"]

</final>

Subscriure's al meu blog.

Etiquetas de Technorati:

Ràpida & Fàcil: Crear una carpeta i assignar un tipus de contingut (O, Tenir el seu KPIs i menjar-los també)

Per tal de treballar al voltant d'un problema KPI Jo vaig escriure sobre aquí, Vaig fer algunes proves i descobert obra que de KPI contra carpetes amb metadades de la mateixa manera que treballen contra la documentació o elements de llista. Em va resultar-lo mitjançant la creació d'un nou tipus de contingut basats en el tipus de contingut de carpeta i llavors afegit alguns camps. He creat alguns indicadors i demostrat a mi mateix que KPIs funcionarà com es preveia. Aquest va ser bona notícia. No és perfecte, perquè el drils avall teniu des del KPI contra les carpetes no és exactament el que vol. Això no és massa un inconvenient en el meu cas perquè 1) els usuaris finals no coneixen res millor i 2) -Àfrica se'n va a una carpeta. Feu clic al nom de carpeta i estan a l'element. És dos clics en comptes d'un, que no és la fi del món.

Aquesta fluïa molt bé amb la feina que estava fent. Estic creant una carpeta per a cada document que arriba carregat. Això es fa mitjançant un auricular d'esdeveniment. Com a resultat, és una peça de pastís per mantenir la carpeta de pare meta dades en sincronia amb les dades de meta KPI impulsat des de l'arxiu mateix ja que les canonades ja està en marxa. This allows me to have my KPI’s and eat them too 🙂

He modificat l'auricular d'esdeveniment per afegir la carpeta i llavors posi el tipus de contingut d'aquesta carpeta nova al meu tipus de contingut de KPI amistós costum. Aquest tros de codi feia el truc:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Documents").Subcarpetes;
  SPFolder addedFolder = srcFolders.Add(Propietats.ListItem.ID.ToString());
  SPContentTypeId kpiCT = nou SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["ID tipus de contingut"] = kpiCT;
  addedFolder.Item.Update();

Per localitzar l'ID de tipus de contingut present, Puc accedir a aquest tipus de contingut mitjançant la configuració del lloc i còpia i enganxar-lo l'URL com mostrat en:

imatge

</final>

Subscriure's al meu blog!

Etiquetas de Technorati: ,

Ràpid i fàcil: Obtenir el SPFolder d'un SPListItem en un auricular d'esdeveniment

No m'agrada admetre-ho, però he lluitat amb aquest tot dia. Meu auricular d'esdeveniment necessita actualitzar un camp de la carpeta superior. Això mica Mostra com fer-ho:

privat buit UpdateParentFolder(SPItemEventProperties Propietats)
{

SPFolder thisItemFolder = propietats.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ estatus d'aprovació"] = "Bones notícies, tot el món!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

En aquest cas, Estic treballant amb una biblioteca de documents i les propietats estan venint d'un esdeveniment d'ItemAdded.

El truc és que vostè no pot aconseguir l'SPFolder de l'element directament des de l'element (i. e. Propietats.ListItem.Folder és nul). En canvi, anar a d'arxiu associat de l'element llista i obtenir la carpeta de l'arxiu.

</final>

Subscriure's al meu blog!

Etiquetas de Technorati:

Encara un altre auricular d'esdeveniment depurar truc

Estic segur que no sóc la primera persona a sortir amb aquest. No obstant això, Jo no he notat ningú publicar un truc com això des que vaig començar prestant molta atenció a la comunitat el juliol passat. Així, Vaig pensar que havia posat aquesta punta ràpida i fàcil de depuració.

Estic treballant en un auricular d'esdeveniment que va començar a generar aquest error en el 12 rusc:

Error en carregar i corrent d'auricular d'esdeveniment Conchango.xyzzyEventReceiver en xyzzy, Versió 1.0.0.0 de =, Cultura = neutral, PublicKeyToken = blahbalhbalh. Informació addicional està per sota. : Referència de l'objecte no definit com a una instància d'un objecte.

No sabia on havia introduït aquest error perquè havia fet massa coses en un dels meus cicles codi/desplegar/prova.

Provava aquesta solució per aconseguir el meu pdb allà amb l'esperança de que SharePoint 12 rusc mostraria la traça de pila, però gens de sort. No sé si és possible, i si algú ho fa, Si us plau deixi'm saber 🙂

Sé que és possible escriure els teus propis missatges de registre a la 12 rusc. Francament, Jo volia una cosa una mica menys por i més ràpid d'implementar.

' M va ocórrer que podria aconseguir com a mínim alguna informació bàsica traça per la captura i re-throwing genèrics excepcions com aquest:

  Provi {
    UpdateEditionDate(Propietats);
  }
  trampa (Excepció e)
  {
    tir nou Excepció("Dispatcher, UpdateEditionDate(): Excepció: [" + e.ToString() + "].");
  }

Això va aparèixer en el 12 thusly rusc:

Error en carregar i corrent d'auricular d'esdeveniment Conchango.xyzzyEventReceiver en xyzzy, Versió 1.0.0.0 de =, Cultura = neutral, PublicKeyToken = blahblahblah. Informació addicional està per sota. : Despatx, UpdateEditionDate(): Excepció: [System.NullReferenceException: Referència de l'objecte no definit com a una instància d'un objecte. a Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(Propietats de l'SPItemEventProperties) a Conchango.xyzzyManagementEventReceiver.Dispatcher(Propietats de l'SPItemEventProperties, Corda eventDescription)].

Això em va donar tot el detall que necessitava per perseguir aquest problema en particular, i espero que per usar-lo molt en el futur.

</final>

Subscriure's al meu blog!

Solució: SPQuery no busca carpetes

Aquesta setmana passada jo estava aplicant una "evolució" solució per a un client que utilitza BDC i SPQuery i corria amb algunes dificultats per utilitzar el SPQuery contra una biblioteca de documents que contenen les carpetes. Bottom line: Assigna recursiva"" a l'atribut de vista de la consulta.

El meu escenari:

  • El dilluns, Puc pujar un document i proporcionar algunes dades meta.
  • La setmana següent, Carregar un nou document. Gran part de metadades d'aquest nou document es basa en el document que he pujat el dilluns (que anomenem la "document mestre").
  • Hem creat una façana de servei web que proporciona una interfície de BDC-friendly a la llista de manera que els usuaris poden fàcilment localitzar aquell document de dilluns mitjançant una recerca de títol.
  • Una columna de dades del servei BDC proporciona una interfície d'usuari amigable. (Això és part del meu intent en l'ús BDC per a una columna de cerca més amistós).

El servei de façana BDC final utilitza una pregunta semblant a això per fer la consulta:

 // Utilitza l'eina de U2U per ajudar en la generació d'aquesta consulta CAML.
      oQuery.Query =
        "<On>";

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

      oQuery.Query   =
        "    <I>" +
        "      <Geq>" +
        "        <Nom de FieldRef =  "DocumentId" />" +
        "        <Valor de tipus =  "Text">" + minId + "</Valor>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <Nom de FieldRef =  "DocumentId" />" +
        "        <Valor de tipus =  "Text">" + maxId + "</Valor>" +
        "      </Leq>" +
        "    </I>";

      Si (titleFilter.Length > 0)
        oQuery.Query   =
          "    <Conté>" +
          "      <Nom de FieldRef =  "Title" />" +
          "      <Valor de tipus =  "Text">" + titleFilter + "</Valor>" +
          "    </Conté>" +
          "  </I>";
      oQuery.Query   =
        "</On>";

Durant la primera etapa de desenvolupament, Això treballava gran. No obstant això, introduíem carpetes al directori per resoldre alguns problemes i de sobte, meu selector BDC no obtindreu cap resultat. Això em fa un seguiment fins el fet que el SPQuery tornaria mai cap resultat. Hem utilitzat les carpetes principalment per permetre que múltiples fitxers amb el mateix nom per a ser carregat però amb diferents meta dades. Quan es carrega l'arxiu, podem crear una carpeta basat en ID de l'element llista i llavors moure l'arxiu allà (Jo vaig escriure sobre això aquí; hem tingut resultats mixtos amb aquest enfocament, però tot el, està funcionant bé). L'usuari no es preocupen sobre carpetes i de fet, realment no entenc que hi ha algunes carpetes. Hem configurat totes les vistes a la biblioteca per mostrar els elements sense tenir en compte les carpetes.

Colpeixo aquest problema dues vegades com la implementació tècnica va evolucionar i resoldre-ho diferent cada vegada. La primera vegada, Que no estava utilitzant l'operador conté en la consulta. Sense un operador conté, Vaig ser capaç de resoldre el problema mitjançant l'especificació de la vista sobre contructor de la SPQuery. Enlloc de fer servir el constructor per defecte:

SPList oList = web.Llistes["Documents"];

SPQuery oQuery = nou SPQuery();

En canvi utilitzava un constructor que s'ha especificat una visió:

SPList oList = web.Llistes["Documents"];

SPQuery oQuery = nou SPQuery(oList.Views["Tots els Documents"]);

Que resol el problema i vaig començar a buscar els meus resultats.

Després afegir l'operador conté en la barreja i trencava una altra vegada. Resulta que l'operador conté, fins on puc dir, no funciona amb la vista de la mateixa manera com els un GEQ més simple / Operadors LEQ. Vaig fer algunes cerques i vaig aprendre que ViewAttributes de la consulta haurien de tindre "Recursiva", com a:

oQuery.ViewAttributes = "Abast = "Recursive"";

Que resolia el problema per conté. De fet, Això també resoldre el meu problema de recerca original i si m'havia especificat la recursiu atribuir la primera vegada, Hi hauria no corregut a l'assumpte una altra vegada.

El fet que un SPQuery basada en la vista funciona per alguns operadors (GEQ/LEQ) i no altres (CONTÉ), juntament amb el fet que KPIs no semblen que funcionin en absolut amb la carpeta que conté les biblioteques de document condueix mi per creure que el SPQuery té alguns assumptes ortogonal.

Agraïment especial:

  • La bona gent U2U i les seves eines de consulta.
  • Michael Hoff és genial "aprenent sobre la marxa" entrada de blog, observacions i Respostes.

</final>

Subscriure's al meu blog!

Error de molsa KPI? Llista d'indicador lligat a la Biblioteca de documents amb carpetes

ACTUALITZACIÓ 02/29/08: He resolt aquest problema creant una carpeta, i llavors assignar un tipus de contingut a la carpeta que té la meta dades que necessito pel KPI. Que es descriu en una mica més detall aquí.

Hem implantat una solució tècnica on usuaris carregar documents a una biblioteca de documents. Un auricular d'esdeveniment crea un directori i mou el fitxer al directori (utilitzant una tècnica similar pel que vaig escriure sobre aquí). Ens He navegat amb èxit al voltant dels potencials problemes causats per auriculars d'esdeveniment que rebategi arxius carregats (principalment perquè els usuaris mai no començar el seu document fent clic damunt "nou" però en canvi crear el docs localment i llavors carregar-los).

Les metadades per a aquests documents inclou un Sí/No columna lloc anomenat "Urgent" i una altra columna del lloc anomenat "Estat". Hem de complir amb un requisit de negocis que Mostra el percentatge de "Urgent" documents de l'estatus està "Pendent".

Això és normalment simple de fer i em va descriure una cosa molt semblant a això a SharePoint Beagle amb una gran quantitat de captures de pantalla si t'interessa.

En poques paraules, Jo vaig fer el següent:

  • Crear una vista sobre la Biblioteca de doc anomenada "Donats".
  • Configurar la vista per ignorar l'estructura de carpeta.
  • Crear una llista KPI.
  • Crear un indicador en la llista que assenyala a el lib doc i que "pendent" Vista.

Això simplement no funciona. El KPI Mostra el meu destí (e. g. cinc documents urgents) però sempre Mostra el nombre real de documents urgents com a zero. Paradoxalment, Si vostè perfori avall els detalls, Mostra els documents urgents cinc en la llista. He creat un escenari molt simple amb dos documents, una a una carpeta i no. Aquí està la captura de pantalla:

imatge

La captura de pantalla de dalt Mostra clarament hi ha dos documents a la vista, però el valor de"" és un. La CamlSchema"" amb el document en blanc Id és a la carpeta d'arrel i l'altre és en una carpeta anomenada "84".

Em sembla que tot i que especifiqueu una visió, el KPI no honorar el "Mostra tots els elements sense carpetes" creació i en canvi, confina a si mateix a la carpeta d'arrel.

Si I sóc malament, Si us plau, mándenme una línia o deixar un comentari.

</final>

Subscriure's al meu blog!

Etiquetas de Technorati:

Solució al problema: “FileNotFoundException” Amb el meu tret d'auricular.

Jo estava treballant en un tret de la setmana passada que vols afegir alguns auriculars d'esdeveniment a una instància de llista específica. (He blogged una mica sobre aquell receptor llista aquí).

Utilitzant la línia d'ordres, Podria instal·lar el tret amb cap error (però vegeu més avall per l'error ocult). Quan vaig intentar desplegar el tret en el lloc, MOLSA queixat d'una «FileNotFoundException" error. Aquesta entrada del blog es descriu com el resolia.

Aquest és l'error que MOSS em va mostrar en el navegador web:

Tret d ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ no es podria instal·lar perquè la càrrega de l'assemblat receptor d'esdeveniment "xyzzyFeatureReceiver_0" ha fallat: System.IO.FileNotFoundException: No es pot carregar arxiu o Assemblea ' xyzzyFeatureReceiver_0’ o una de les seves dependències. El sistema no pot trobar el fitxer especificat.
Nom d'arxiu: ' xyzzyFeatureReceiver_0’
a System.Reflection.Assembly.nLoad(Nom del fitxer AssemblyName, Corda codegraden, Proves assemblySecurity, Muntatge locationHint, StackCrawlMark& stackMark, ThrowOnFileNotFound booleana, ForIntrospection booleana)
a System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Proves assemblySecurity, StackCrawlMark& stackMark, ForIntrospection booleana)
a System.Reflection.Assembly.InternalLoad(Corda assemblyString, Proves assemblySecurity, StackCrawlMark& stackMark, ForIntrospection booleana)
a System.Reflection.Assembly.Load(Corda assemblyString)
a Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Registre de muntatge vinculant és convertida OFF.
Permetre registre de fracàs Assemblea s'uneixen, establir el valor de registres [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) per 1.
Nota: Hi ha algun penal d'actuació associades a registre de fracàs Assemblea s'uneixen.
Per desactivar aquesta funció, treure el valor de registres [HKLMSoftwareMicrosoftFusion!EnableLog].

Detectar problemes amb Windows SharePoint Services.

Sé com provocar deliberadament aquell error: no instal·li l'Assemblea al GAC. Però, era la GAC. Jo normalment instal·la els assemblats a la GAC arrossegant-los a la c:\windowsassembly carpeta utilitzant Explorador de windows. Mai m'he sentit 100% còmode fent això perquè sempre he pensat que el gacutil existia per una raó … així provava que. Feia cap diferència.

Buscava la Internets i trobava aquest lloc: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

El cartell va passar a estar utilitzant el mateix bit arrel del codi (del llibre WSS dins d'aquesta llista) Així que era un signe d'esperança. No obstant això, el suggeriment de la decoració de l'Assemblea amb una [l'Assemblea: ] Directiva no tenia sentit per a mi. De tota manera ho tastava i estava bé. Feia cap diferència.

Llavors em vaig adonar que la meva definició de classe no era pública. Ho vaig fer públic i que va fer cap diferència.

Següent, Vaig anar a la molèstia d'habilitar el "muntatge s'uneixen fracàs registre" (seguint les instruccions precises i útils, sempre) i aquí és on les coses van començar a obtenir interessants. Aquest registre em mostra que el temps d'execució és buscar a tot arreu en aquest servidor meu Assemblea. Fins i tot apareix a buscar-lo a la meva farmaciola. Però … això no cercar-lo en la GAC.

Vaig posar en la meva jaqueta d'hivern i anar a buscar la Internet una altra vegada i trobar que algú ha tingut aquest problema massa. La llarga discussió en aquest anunci peters fora en res i no puc trobar una solució.

Moc la meva Assemblea en un dels llocs que el registre afirma que està buscant i vaig avançar una mica més. Jo estic recompensat amb un nou error al navegador quan I intenten activar la funció de:

No ha pogut crear l'objecte receptor de tret de "xyzzyFeatureReceiver_0" de l'Assemblea, tipus "Conchango.xyzzyFeatureReceiver" per b2cb42e3-4f0a-4380-aaba-1ef9cd526f20 tret: System.ArgumentNullException: Valor no poden ser nul·les.
Nom del paràmetre: tipus
a System.Activator.CreateInstance(Tipus tipus, Booleans no públics)
a System.Activator.CreateInstance(Tipus tipus)
a Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Detectar problemes amb Windows SharePoint Services.

Temps per a un últim viatge de l'Internets!

Aquesta vegada vaig esbrinar, previsiblement prou, Aquesta molsa emet aquest error perquè l'Assemblea no és al GAC.

Vull aconseguir alguna cosa positiva d'aquesta i intentar sentir una mica orgullós que he creat la Fugitiu d'assemblees MSIL, però no està funcionant. Simplement suplements. Em trobo murmurant "o la gallina" sota el meu alè.

Finalment decideix punt. Crear un projecte totalment nou i copiar i enganxar el codi del projecte incredible-cloaked-from-the-GAC-assembly inhàbils per a aquest nou projecte. (Vaig buscar una bandera de complexió anomenar quelcom així com "Amagatall d'Assemblea vinculant si s'instal·la al GAC" però no puc trobar una).

Puc instal lar el tret i activar-lo i … funciona! Així, després de tot allò, Havia bàsicament d ' arrencar’ meu projecte. Això és una altra raó per què odio ordinadors.

Vaig aprendre alguna cosa útil d'aquest. Havia estat instal·lant trets utilitzant la línia d'ordres de stsadm tot el dia i l'estat utilitzant els "-força" opció per hàbit. Per alguna raó, Jo no ús-opció força quan I instal·lava el nou projecte. Aquesta vegada, Feia realment, realment us oblideu copiar Assemblea d'aquest nou projecte a la GAC. Com a resultat, He rebut aquest «FielNotFoundException" error. Aquesta vegada, Em portava de stsadm, no quan intentava activar la funció mitjançant el navegador web. Així, -força de fet juga dos papers. Li permet tornar a instal lar un element existent. També permet instal·lar un tret de vagonetes que no pot treballar a temps d'execució per a la supressió de l'error. Probablement diu tant en l'ajuda d'algun lloc, però mai es va adonar.

</final>

Ràpida & Fàcil: Rebategi l'arxiu carregat mitjançant el Model d'objectes de SharePoint mitjançant un auricular d'esdeveniment

ACTUALITZACIÓ: Això treballa però existeixen importants limitacions que es descriuen en els comentaris. Això encara pot ser útil en alguns cirumstances.

ACTUALITZACIÓ 2: En el meu projecte actual, els usuaris sempre carregar documents. Com a resultat, No corro a un problema on MS Word està funcionant i pensa que l'arxiu fou rebatejada en això. Corria a un problema, "l'arxiu va ser modificat per una altra persona" i això resolia mitjançant una bandera de tipus simple semàfor. Els usuaris necessiten canviar un camp de dades meta del seu valor per defecte a una altra cosa. La itemupdated() receptor busca un valor vàlid allà abans d'efectuar en realitat el canvi de nom i des d'aleshores, No he tingut cap problema. El seu quilometratge pot variar.

Tinc un requeriment del client a canviar el nom dels arxius pujats a una biblioteca de documents específics per ajustar-se amb una convenció de nomenclatura particular. L'API no proporciona un "canvi de nom()" mètode. En canvi, utilitzem "MoveTo(…)". Heus aquí una mica de codi per aconseguir això mínima:

 públic invalidació buit ItemAdded(SPItemEventProperties Propietats)
        {
            SPFile f = propietats.ListItem.File;

            f.MoveTo(propietats.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

La mica complicat només és les propietats". ListItem.ParentList.RootFolder.Url". La MoveTo() mètode requereix una adreça URL. Que amassat amunt punts corda m a la carpeta arrel de la meva biblioteca de document actual. Això permet em d'evitar qualsevol codificació dura al meu auricular d'esdeveniment.

Aquesta és una versió més útil que fa el mateix, però assigna el nom del fitxer "Títol":

 públic invalidació buit ItemAdded(SPItemEventProperties Propietats)
        {
            DisableEventFiring();

            // Assignar el títol d'aquest element al nom d'arxiu propi.
 // NOTA: Aquesta tasca ha de tenir lloc abans que podem modificar l'arxiu mateix.
 // Anomenant actualització() en l'SPFile sembla invalidar les propietats de
 // una mica de sentit.  Actualitzacions al títol"" fracassat fins que canvieu (i actualització de() convocatòria)
 // s'han desplaçat davant el canvi de nom del fitxer.
            propietats.Element de llista[Títol""] = propietats.ListItem.File.Name;

            propietats.ListItem.Update();

            SPFile f = propietats.ListItem.File;

            // Aconseguir l'extensió del fitxer.  Necessitem que més tard.
 corda spfileExt = nou FileInfo(f.Name).Extensió;

            // Rebategi l'arxiu a ID de l'element llista i utilitzeu l'extensió per mantenir
 // aquesta part del que intacta.
            f.MoveTo(propietats.ListItem.ParentList.RootFolder.Url +
                "/" + propietats.Element de llista["ID"] + spfileExt);

            // Cometre el moviment.
            f.Update();

            EnableEventFiring();
        }

Punta ràpida: Part de Web de consulta de contingut, Cerca el valor de columna i XSL

Tinc un nom de columna en un tipus de contingut anomenada "Real Estate ubicació".

Aquesta columna és de tipus "Cerca".

He modificat <CommonViewFields> i ItemStyle.xsl per mostrar la columna.

Un simple <XSL:valor de seleccionar =…> torna enrere un valor intern que inclou les dades de posició ordinal, com:

1;#Miami

Per obtenir el valor humà amistós, utilitzar xsl subcadena-després, com es Mostra:

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

Utilitzar aquesta tècnica quan sigui que estan treballant amb valors de cerca en transformacions XSL i necessita per obtenir el valor humà amistós.

<final />

Etiquetas de Technorati: , ,

Ràpid i fàcil: Determinar el nom de la columna interna d'una columna de lloc

ACTUALITZACIÓ: Jeremy Thake té blogged sobre això i posar cap amunt d'alguns codi d'una aplicació de consola que Mostra els noms interns.

Jo estava tractant d'aconseguir un element de consulta de continguts web per mostrar una data de venciment d'una tasca, i perquè l'etiqueta de pantalla és "Data de venciment", Vaig suposar que el nom de columna d'utilitzar en <CommonViewFields> és "Due_x0020_Date".

Malament!

El nom de columna real en aquest cas va ser "DueDate".

Com ho puc trobar? Vaig tornar a llegir Heather Entrada del bloc sobre com modificar el CQWP de Salomó mostrar columnes addicionals de dades. Ella descriu aquest procés al pas #13. Confiar en ell. És correcte. Com a mínim, era correcte per a mi. No el confiar al principi per a una altra columna amb un nom molt més.

Dic "confiança" perquè no confiar en ell i probablement malgastat a prop de dues hores se pels meu cap contra una paret. Després va resoldre el DueDate"" nom, Jo volia afegir un altre camp per <CommonViewFields>. Utilitzant la tècnica de Solomon, M'estava posant un nom de la columna com a "XYZ_x0020_Project_x0020_Due_x00".

Em vaig dir a mi mateix, Això és clarament un nom truncat. Me n'anava per davant i les Nacions Unides truncat-lo sense èxit. Finalment utilitzava el nom aparentment truncat i treballava.

Punta de gratificació: Quan jo estava treballant amb la CQWP, Si afegia un mal nom de l'intern a <CommonViewFields>, el CQWP em diria que la consulta havia tornat cap resultat. Però, Si li ha afegit un tipus de dades amb el nom de camp, es tornaria un resultat. Afegir les dades tipus realment emmascara un problema ja que jo estava referenciant un camp inexistent. Jo podria afegir-lo, però quan intentava mostrar el seu valor, Sempre tindria un espai en blanc.

Això no emmascarar l'error:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Això emmascarar l'error:

<CommonViewFields>Due_x0020_Date,Data i hora;</CommonViewfields>

</final>