Rápida y sencilla: Provisión de un sitio Web mediante el modelo de objetos de SharePoint en C#

He intentado buscar un pequeño código de fragmento de código que mostraría Cómo puedo crear un SPWeb nuevo en una colección de sitios. No encuentro como fácilmente o rápidamente como esperaba así que pensé que sería bofetada juntos una pequeña entrada sobre el tema.

Este código crea un nuevo sitio Wiki:

 SPSite siteCollection;

    siteCollection = Nuevo SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy título",
        "xyzzy Descripción", 1033, SPWebTemplate.WebTemplateWIKI, falso, falso);

Mis búsquedas iniciales fallaron porque estaba buscando frases como "disposición un sitio web utilizando el modelo de objetos de sharepoint" y similares.

Si usted búsqueda para "Webs.Add()", Usted encontrará un número de entradas en el blog muy útil, Artículos MSDN y la documentación de SDK que entrar en profundidad sobre este tema. Definitivamente te recomiendo Este sitio.

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

Integrar los flujos de trabajo SharePoint Designer con servicios Web

He estado jugando con acciones personalizadas de SharePoint Designer para algún tiempo (ver aquí para algunas cosas detalladas, Si le interesa).

En mi proyecto actual, tenemos que hacer un trabajo bastante pesado y queremos usar flujo de trabajo declarativo de la SPD para gestionar el proceso de negocio asociado.

Larga historia corta, Esto es totalmente posible. Amplié mi proyecto de Codeplex para invocar un "servicio de ayudante" y ahora podemos invocar un servicio web directamente en un flujo de trabajo SPD.

Aquí está la firma:

 público cadena Dispatcher(
        GUID WebID, // Pasó por el entorno de ejecución
        GUID SiteID, // Pasó por el entorno de ejecución
        cadena ListID, // Pasó por el editor de texto enriquecido (no sé por qué esto es una cadena, no un GUID)
        int ListItemID, // Pasó por el editor de texto enriquecido.
        cadena XmlMessage) // Aprobada por el usuario, como declaró en SPD.

Esto aprovecha el hecho de que podemos obtener información importante de flujo de trabajo, como el sitio, ID de la lista, etc.. Esto está bien documentado en varios lugares para los interesados en la creación de tus propias acciones personalizadas. La idea es extraer la cadena XML proporcionado por el usuario para enviar un procedimiento adecuado. Cosas divertidas!

Lamentablemente, Esto es obviamente un boleto de ida a "Antipatrón vacacional" anti-patrón tierra, pero es mejor que golpear una pared de ladrillo 🙂

Es un antipatrón si lo haces a pesar de que sabe que es un antipatrón?

Espero que esto Envuelva dentro de Codeplex en el futuro cercano. Si usted está interesado en mí hacerlo, Dame poke (Correo electrónico o deja un comentario) y voy a ser más entusiasta que en hacerlo 🙂

</final>

Suscribirse a mi blog.

Etiquetas de Technorati: ,

Domingo divertido: “Me pregunto si la contraseña es …”

Hace poco compré comida para mi hermano (como de costumbre) y terminamos hablando acerca de cosas divertidas que hicimos en nuestros respectivos colegios. En mi alma mater, Lafayette College, el apoyo académico Departamento tenía una manera muy incluyente respecto. Nos dieron un montón de cuerda y aproveché a veces.

Dos mis recuerdos favoritos se refieren a mi buen amigo, Gabe. Él hizo el terrible error de decirle a la gente su año del estudiante de primer año que "yo soy un estudiante de primer año, pero el segundo pie" debido a las diversas clases de colocación avanzada que había tomado, etc.. Muchos de nosotros estaban situadas de manera similar, pero no hablamos de lo mucho. Su último año, Cuando le presentamos a las personas, decir "este es Gabe. Él es un Senior, pero él tiene segundo pie ".

El Colegio tenía algunos sol estación de trabajo/servidores de X-Window. Tenían monitores gigantescos y los ingenieros utilizaron para CAD y otras cosas aburridas de Ingeniero. Que CS personas utilizaban para aprender programación y, Claro, jugar a juegos.

No como los ingenieros ordenador indefensos a mucho por lo que una de nuestras cosas favoritas para hacer sería a telnet al cuadro estaban y ejecutar X-eye en ellos. Esto sería pop un par de ojos que siguieron el ratón de la pantalla. Podría incluso más el pop y tiene literalmente una docena o más de las aplicaciones de X-eye funcionando. Intenta no reírte a carcajadas cuando un desafortunado ingeniero intenta cerrar X-eye tras X-eye y murmura entre dientes al respecto 🙂

También jugó X-trek en esas cajas. Para hacer eso, tienes que descargar la fuente, Haz varias dependencias donde podría encontrarlos y construirlo. No era un sofisticado programador C, pero yo podía leer los archivos de encabezado. Yo miraba a través de estos y encontrar directivas como "#DEFINE MAX_TORPEDO_DISTANCE 10". Yo jugaba con que aumentar la gama y energía para las fases y torpedos, lo reconstruido y luego destruido Gabe la próxima vez que tocamos.

Gabe fue también un gran fan de un programa de televisión llamado Blake 7. No había visto nunca, pero que no me impide insistir que el Dr.. Que es el superior. Las discusiones se calentaban a veces 🙂

Un día, se me ocurrió que podría probablemente supongo que su contraseña de UNIX. Me senté junto a él un día y anunció en un tono alto, "Voy a adivinar tu contraseña ahora, Gabe." "Sí, derecho" fue su respuesta. Luego logueado, introducir su id de usuario, volvió a enfrentarse a él, ha escrito y dicho en voz alta, "Me pregunto si es B-L-A-K-E-7" ? Mecanografía no ha nunca sido recompensada generosamente como lo hizo ese día.

La próxima semana (o pronto): Más travesuras de habitación de ordenador de la Universidad.

¿Tienes alguna para compartir? Deja un comentario o correo y te lo publicaremos aquí.

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

Anuncio público menor: Configuración de seguridad directo de Windows y contratantes propietarios de espacio

Recibir un puñado de mensajes de personas mediante el built-in "enviar un mensaje" función de Microsoft proporciona espacios vivos (que también alberga a mi blog) cada mes.

Alrededor de un tercio del tiempo, los usuarios han asegurado su cuenta espacios vivos que yo no puedo responder. Se trata de algún tipo de característica de anti-spam que supongo.

</final>

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:

Punta rápido de usuario final: Vistas de ordenar en una biblioteca de documentos, Lista, etc..

Podemos, debe y crear muchos puntos de vista en las listas de SharePoint (bibliotecas de documentos, listas personalizadas, etc.). SharePoint siempre listas de vistas disponibles en orden alfabético. No podemos cambiar este uso de la funcionalidad. Si se puede hacer a través de la personalización (y no estoy seguro de que puede), es demasiado técnico para el usuario final típico.

Si desea controlar el orden en que SharePoint muestra vistas disponibles, simplemente anteponer un número o una carta a nombre de la vista, como en:

1 – Por tipo de Material
2 – Todos los documentos
3 – Fecha de vencimiento

-o-

A – Por tipo de Material
B – Todos los documentos
C – Fecha de vencimiento

También he creado vistas cuya finalidad es estrictamente alimentar un KPI. Yo he estado siguiendo esta Convención de nomenclatura:

Z_KPI_[Descripción]

Eso hace que mi "KPI" vistas al aparecer en la parte inferior de la lista.

</final>

Suscribirse a mi blog.

Etiquetas de Technorati: ,

Domingo divertido: “Cuando era un niño pequeño”

Como padre de familia, en algún lugar a lo largo de la línea descubrí la "cuando era un niño pequeño" truco.

Mi hijo, probablemente cuatro o cinco en el momento, estaba jugando un globo y como los niños más pequeños que jugar con globos, él apareció. Él estaba muy molesto. El mundo había llegado a su fin. Yo le dije, "cuando era niño, Tuve un balón y extrae y eventualmente, Tengo un globo nuevo." Parecía que le ayudara a hacer frente a su pérdida y condujo a un divertido hablar de lo que era cuando era un niño.

Que así como una técnica de consuelo y lo utilizó varias veces durante el siguiente período de tiempo. Tener problemas una vez cuando su ranchero del monstruo 3 criatura murió. Hablé acerca de cómo mi perro, Príncipe, había muerto en un accidente de coche. A esta hora, su respuesta fue, "Ahora me siento malas unos dos cosas!" Eludido usando la "cuando era un niño" técnica para consuelo después de.

Antes del incidente del perro muerto, Sin embargo, También había comenzado a utilizar la técnica para convencerlo de hacer las tareas. "Cuando era un niño pequeño, Tuve que salir y conseguir el periódico", "limpiar mi habitación", "mamá de obtener su taza de café", etc..

Esto también fue bastante exitosa por un tiempo, pero él comenzó a rebelarse contra la tiranía de mi infancia cada vez más. Un evento, en particular, marcó el final. Le dije a traer la basura de banqueta regreso al garaje. Sostuvo y me respondió, "Cuando era un niño pequeño, Tuve que llevar la basura al garaje." Él respondió, "Oh yeah! Así cuando eras un niño, fue estúpido!".

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

No se podrá fijar columnas en listas y bibliotecas de documentos y vistas

ACTUALIZACIÓN (02/29/08): Este nuevo proyecto de codeplex parece proporcionar un método para proteger columnas individuales: http://www.codeplex.com/SPListDisplaySetting. Si usted tiene alguna experiencia trabajando con él, por favor dejar un comentario.

Carteles del Foro preguntan frecuentemente como este: "Tengo una visión responsable y y una visión personal de una lista. Cómo segura la vista manager para que el personal no puede utilizar?"

También con frecuencia piden una pregunta relacionada: "Quiero asegurar una columna de metadatos específicos para que sólo los administradores pueden editar esa columna, mientras que otros no pueden verlo."

Estas respuestas se aplican a ambos WSS 3.0 y MOSS:

  • SharePoint no proporciona soporte de out-of-box para asegurar views.
  • SharePoint no proporciona soporte de out-of-box para columnas seguridad.

Hay varias técnicas uno pueden seguir para resolver este tipo de requisitos de seguridad. Aquí es lo que puedo pensar:

  • Utilizar seguridad a nivel de elemento de fuera de la caja. Vistas siempre honran a configuración de seguridad de nivel de elemento. Receptores de eventos y flujo de trabajo puede automatizar la asignación de seguridad.
  • Utilizar vistas personales para "el privilegio" Vistas. Estos son fáciles de configurar. Sin embargo, debido a su personal"" naturaleza, Estos deben ser configurados para cada usuario. Configuración de seguridad estándar de uso para evitar que nadie crear un punto de vista personal.
  • Usar un elemento web vista de datos e implementar algún tipo de solución de recorte de seguridad AJAXy.
  • Rodar su propia funcionalidad de visualización de la lista e incorporar el recorte de seguridad a nivel de columna.
  • Modificar los formularios de entrada de datos y utilizar JavaScript junto con el modelo de seguridad para aplicar el recorte de seguridad de nivel de la columna.
  • Utilizar un formulario de InfoPath para entrada de datos. Aplicar recorte de seguridad de nivel de columna mediante llamadas a servicios web de SharePoint y condicionalmente ocultar campos según sea necesario.
  • Rollo de su propia función de entrada de datos ASP.NET que implementa el recorte de seguridad a nivel de columna.

Ninguna de esas opciones son realmente tan bueno, pero hay al menos un camino a seguir si necesita, Aunque es difícil.

NOTA: Si vas por ninguno de estos caminos, no se olvide "acciones-> Abrir con explorador de Windows". Usted quiere estar seguro de que pruebas con esa característica para asegurarse de que no funciona como una "puerta trasera" y derrotar a su esquema de seguridad.

Si usted tiene otras ideas o experiencias con columnas o puntos de vista de la seguridad, por favor Enviarme un correo electrónico o deja un comentario y actualizaremos esta contabilización según corresponda.

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

Punta rápido: Números de versión de ADF BDC son tu amigo

Si usted está codificación manual ADF archivos y haciendo un montón de ciclos de prueba de importación de código, Utilice el número de versión para hacer su vida más fácil.

Detesto admitirlo, pero hasta esta semana, Siempre fui borrando el ADF y vuelva a importarlo. Esto romper mis columnas de datos de negocio y me hacen volver a alambre les. Todo innecesario.

Este fichero bajo «es obvio una vez que ves».

Ejemplo:

<LobSystem
xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance" XSi:schemaLocation="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Tipo="WebService" Versión="1.2.0.0" Nombre="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Cambiar esa versión y volver a importar y la columna de datos de negocios existente utiliza la versión actualizada automáticamente con ninguna configuración adicional requerida.

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

Solución: Selector de BDC muestra sólo una columna de resultados

En mis intentos de ir proporcionando un columna de búsqueda más útil usar BDC, Golpeo una pared con el selector de BDC. Si no lo has hecho ver, el selector de BDC es similar a un selector de personas salvo que funciona con las columnas de tipo "datos de negocio".

Acceder al selector de haciendo clic en el icono de libro abierto de una columna de datos de negocios como se muestra:

imagen

La imagen de arriba muestra una columna de datos de negocio llamada "Id del documento maestro". La columna está conectada, a través de BDC, a un servicio web. El servicio web devuelve dos columnas de información: Título e identificación de documento. El propósito de negocio aquí es proporcionar una "este documento se basa en" función. Los usuarios seleccionar a un maestro"" documento y cuando guarde, un receptor de eventos copia los campos de datos meta del patrón de referenciado.

De forma predeterminada, el selector de BDC este aspecto cuando busco un documento cuyo ID = "38":

clip_image002

Es útil, pero no lo suficientemente bueno. Gente no piensa en términos de identificaciones, piensan en términos de títulos y otros meta datos. El selector le permite buscar en otras columnas (por ejemplo:. Título) pero no mostrar la lista actual de títulos que se encuentra, sólo su DocId de como se muestra a continuación:

clip_image002[1]

(La captura de pantalla no es tan grande porque yo no elegir una búsqueda que devuelve los resultados válidos, pero se puede ver si habían encontrado algunos resultados, sólo habría mostrado de DocId, no títulos).

He buscado en alta y baja para la respuesta a esto y no se pudo. Mi colega, el venerable Jonathan Bradshaw, había enfrentado y resuelto este problema. Cuando llegó a él por ayuda, me señaló en la dirección correcta.

Configurar el selector para mostrar varias columnas a través de la ShowInPicker"" propiedad en el ADF:

<Propiedad Nombre="ShowInPicker" Tipo="Systems.Boolean">verdadero</Propiedad>

Con más detalle:

  <!-- Título -->
  <TypeDescriptor TypeName="System.String" Nombre="Título" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Título</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Propiedades>
      <Propiedad Nombre="DisplayByDefault" Tipo="Systems.Boolean">verdadero</Propiedad>
      <Propiedad Nombre="ShowInPicker" Tipo="Systems.Boolean">verdadero</Propiedad>
    </Propiedades>
  </TypeDescriptor>

Al establecer esta propiedad introducir un problema menor. Tan pronto como se establece una vez, es necesario establecer para cada columna que desee mostrar. En mi caso, Selector de BDC demostrada DocId por defecto. Sin embargo, una vez que se ha agregado "ShowInPicker" a título, DocId ya no muestran. Resolví estableciendo explícitamente la propiedad ShowInPicker para ID Doc.

Aquí está el resultado:

imagen

(Voy a explicar la extraña "168 – CamlSchema.xsd" construcción en un futuro blog. En pocas palabras, es una cadena concatenada que permite una experiencia de usuario ligeramente mejor).

Claro, Después de haber escrito esta entrada de blog, Acabo de hacer una búsqueda de "ShowInPicker" y encontró numerosos éxitos, incluyendo este: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Explica el significado de esa propiedad junto con algunas otras cosas buenas de la BDC.

</final>

Suscribirse a mi blog!

Etiquetas de Technorati: