Arxius per mes: Febrer 2008

Anunci públic menor: Windows Viure Seguretat escenes i Contacting espai propietaris

Vaig rebre un grapat de missatges d'individus mitjançant el built-in "enviar un missatge" funció de Microsoft proporciona amb espais en directe (que també acull el meu blog) cada mes.

Aproximadament un terç del temps, els usuaris tindran assegurat el seu compte espais en directe que no puc respondre. Això és alguna classe d'antispam característica que suposo.

</final>

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:

Punta ràpida de l'usuari final: Ordena les visualitzacions d'una biblioteca de documents, Llista, etc.

Podem, hauria i crear moltes visualitzacions a les llistes del SharePoint (biblioteques de documents, llistes de costum, etc). Sempre llistes del SharePoint vistes disponibles per ordre alfabètic. No podem canviar aquest ús de la funcionalitat de la caixa. Si es pot fer mitjançant la personalització (i no estic segur que pot), és molt tècnic per al usuari final típic.

Si vol controlar l'ordre en que SharePoint llistes disponibles visites, simplement posa davant un nombre o la lletra amb el nom de visualització, com a:

1 – Els tipus de Material
2 – Tots els Documents
3 – Data de venciment

-o-

A – Els tipus de Material
B – Tots els Documents
C – Data de venciment

També he creat vistes amb l'objectiu és estrictament per alimentar un KPI. He estat seguint aquesta Convenció de nomenclatura:

Z_KPI_[Descripció]

Que provoca el meu "KPI" vistes a aparèixer a la part inferior de la llista.

</final>

Subscriure's al meu blog.

Etiquetas de Technorati: ,

Diumenge Funny: “Quan jo era un nen petit”

Com un pare, en algun lloc al llarg de la línia que vaig descobrir la "Quan jo era un nen petit" Truc.

El meu fill, probablement quatre o cinc en el moment, estava jugant un globus i agrada als nens més petits que juguen amb globus, es va ficar. Estava molt molest. El món s'havia arribat a la seva fi. Jo li deia, "Quan jo era nen petit, Tenia un globus i que es va ficar i, finalment,, Tinc un nou globus." Semblava que l'ajudi a fer front a la pèrdua i el va portar a un divertit parlar el que era quan jo era un nen petit.

Allò funcionava bé com una tècnica de consol i he utilitzat una diverses vegades durant el següent període de temps. Ficar en problemes una vegada quan seu monstre ramader 3 criatura va morir. Vaig parlar sobre com el meu gos, Príncep, havia mort en un accident de cotxe. Aquesta vegada, la seva resposta va ser, "Ara em sento dolents dues coses!" Jo shied Away de utilitzant la "quan era un nen petit" tècnica per consolar-se després d'allò.

Abans de l'incident del gos mort, No obstant això, Jo també havia començat a utilitzar la tècnica per convèncer-lo per fer tasques. "Quan jo era un nen petit, Havia de sortir i fer el diari", "netejar la meva habitació", "aconseguir la mare la seva tassa de cafè", etc.

Això també va ser força reeixida una estona, però va començar a cada vegada més rebel·lar-se contra la tirania de la meva infantesa. Un esdeveniment, en particular, van marcar la fi. Li vaig dir a portar les llaunes d'escombraries de vorera a garatge. Va argumentar i em va respondre, "Quan jo era un nen petit, Vaig haver de recuperar les escombraries al garatge." Va respondre, "Oh sí! Bé quan eres un nen petit, allò era estúpid!".

</final>

Subscriure's al meu blog.

Etiquetas de Technorati:

Vistes i columnes en llistes i les biblioteques de Document no es pot protegir

ACTUALITZACIÓ (02/29/08): Aquest nou projecte de codeplex sembla proporcionar un mètode per assegurar columnes individuals: http://www.codeplex.com/SPListDisplaySetting. Si teniu qualsevol experiència treballant amb ell, Si us plau deixar un comentari.

Cartells fòrum amb freqüència una pregunta com aquesta: "Tinc una visió director i i una visió personal d'una llista. Com segura la vista d'administrador per tal que el personal no es pot utilitzar?"

Ells també amb freqüència una pregunta relacionats: "Vull assegurar una columna de metadades específics per tal que només els gestors poden editar aquesta columna, mentre que altres pot no fins i tot veure-ho."

Aquestes respostes s'aplica a ambdós WSS 3.0 i MOSS:

  • SharePoint no proporciona suport d'out-of-the-box per assegurar visites.
  • SharePoint no proporciona suport d'out-of-the-box de columnes de seguretat.

Hi ha diverses tècniques podeu seguir per complir amb aquests tipus de requisits de seguretat. Heus aquí el que puc pensar:

  • Utilitzar seguretat de nivell d'element de sortida-of-the-box. Vistes sempre respecten la configuració de seguretat de nivell d'element. Auriculars d'esdeveniment i/o flux de treball pot automatitzar l'assignació de seguretat.
  • Utilitzar opinions personals per a "el privilegi" vistes. Aquestes són prou fàcils de configurar. No obstant això, a causa de la seva personal"" Natura, Aquests han de ser configurat per a cada usuari. Utilitza la configuració de seguretat estàndard per impedir qualsevol més creant una opinió personal.
  • Utilitzar una part de web de visualització de dades i implementar algun tipus de solució d'Estiba de seguretat AJAXy.
  • Registre de la seva pròpia funcionalitat d'exhibició de llista i incorporar Estiba de seguretat en el nivell de columna.
  • Modificar les formes d'entrada de dades i utilitzar JavaScript en relació amb el model de seguretat per implementar la retallada de la seguretat de nivell de columna.
  • Utilitzar un formulari InfoPath per a l'entrada de dades. Retallada de seguretat de nivell de columna mitjançant trucades de servei web del SharePoint i condicional amaga els camps com calgui posar en pràctica.
  • Roll el seu propi funció d'entrada de dades d'ASP.NET que implementa la retallada de seguretat de nivell de columna.

Cap d'aquestes opcions no és realment allò gran, però no hi ha com a mínim un camí a seguir si vostè necessita, fins i tot si és difícil.

NOTA: Si se n va algun d'aquests camins, Your say forget about "accions-> Obrir amb Explorador de Windows". Vostè vol estar segur que vostè provar amb aquell tret per assegurar-se que no funciona com una porta del darrere"" i derrotar el seu esquema de seguretat.

Si vostè té altres idees per o experiències amb assegurar columnes o vistes, Si us plau Rebi per email o deixar un comentari i vaig a actualitzar aquest anunci segons s'escaigui.

</final>

Subscriure's al meu blog.

Etiquetas de Technorati:

Punta ràpida: Números de versió de BDC ADF són el seu amic

Si vostè està mà-codificació ADF arxius i fent un munt de codi/importació/prova cicles, Utilitzi el nombre de versió per fer més fàcil la seva vida.

No m'agrada admetre-ho, però fins que aquesta setmana, Sempre es va suprimir l'ADF i tornar a importar-lo. Això seria trencar la meva columnes de dades de negoci i fer-me tornar a ells de filferro. Tot innecessària.

Arxivi això sota "és obvi una vegada que vegi això".

Exemple:

<LobSystem
xmlns:XSi="http://www.w3.org/2001/XMLSchema" XSi:schemaLocation="http://Schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Tipus="WebService" Versió="1.2.0.0" Nom="xyzzyDocumentReview" xmlns="http://Schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Canviar d'aquella versió i re-import i la columna de dades de negoci existents utilitza la versió actualitzada automàticament amb cap configuració addicional requerit.

</final>

Subscriure's al meu blog.

Etiquetas de Technorati:

Solució: Selector de BDC Mostra només una columna de resultats

En el meu intents en curs a proporcionar un columna de cerca més útil utilitzant BDC, Em va colpejar una paret amb el selector BDC. Si no ho veig, el Batan Obridor de BDC és similar a un Batan Obridor de gent, excepte que funciona amb columnes de tipus "dades de negoci".

Accedeix el Batan Obridor de fent clic a la icona de llibre obert d'una columna de dades de negoci, com es Mostra:

imatge

La imatge de dalt Mostra una columna de dades de negoci anomenada "Id de Document mestre". La columna està connectada, Via BDC, a un servei web. El servei web torna dues columnes d'informació: ID de document i títol. El propòsit de negoci aquí és oferir una "aquest document es basa en" funció. Usuaris Seleccioneu un mestre"" document i quan salven, un auricular d'esdeveniment Copia els camps de dades meta del Màster referenciat.

Per defecte, el Batan Obridor de BDC aquest aspecte quan busco un document del qual ID = "38":

clip_image002

Això és útil, però no suficient. La gent no pensa en termes d'IDs, van pensar en termes de títols i/o altres dades de metadades. El selector li permet buscar en altres columnes (e. g. Títol) però no es mostrarà la llista actual dels títols que s'ha trobat, només les seves DocId és com es mostra aquí:

clip_image002[1]

(La captura de pantalla no és tan gran, perquè no agafar una recerca que retorna resultats vàlids, però es pot veure que si que havia trobat alguns resultats, això només seria han demostrat de DocId, no títols).

He buscat alta i baixa per la resposta a això i fallava. El meu col lega, el venerable Jonathan Bradshaw, tenia davant i resoldre aquest problema. Quan he d'arribar a ell per ajuda, ell em va assenyalar en la direcció correcta.

Configurar el selector per mostrar columnes múltiples via "ShowInPicker" propietat a l'ADF:

<Propietat Nom="ShowInPicker" Tipus="System.boolean">True</Propietat>

Amb més detall:

  <!-- Títol -->
  <TypeDescriptor TypeName="System.string" Nom="Títol" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Títol</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Propietats>
      <Propietat Nom="DisplayByDefault" Tipus="System.boolean">True</Propietat>
      <Propietat Nom="ShowInPicker" Tipus="System.boolean">True</Propietat>
    </Propietats>
  </TypeDescriptor>

Definir aquesta propietat introduir un problema menor. Tan aviat com s'estableix una vegada, cal posar-lo per a cada columna que vulgueu mostrar. En el meu cas, Selector BDC mostrava DocId per defecte. No obstant això, una vegada que afegia "ShowInPicker" per títol, Ell ja no es mostren. Que resolia explícitament establint la propietat ShowInPicker per a Doc ID.

Aquí és el resultat:

imatge

(Vaig a explicar el estrany aspecte "168 – CamlSchema.xsd" construcció en un futur bloc. En poques paraules, és una cadena concatenades que té en compte un mica millor experiència d'usuari).

Clar, Després d'haver escrit aquesta entrada del bloc, Només feia una recerca de "ShowInPicker" i trobar nombrosos hits, incloent-hi aquest: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Explica el significat d'aquesta propietat, juntament amb algunes altres bones coses BDC.

</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!