Rápido e sinxelo: Sitio disposición web usando SharePoint modelo de obxecto en C #

I tried searching for a little snippet code that would show how I can create a new SPWeb in a site collection. I didn’t find it as quickly or easily as I expected so I thought I’d slap together a little entry on the subject.

Este código crea un novo sitio web Wiki:

 SPSite SiteCollection;

    SiteCollection = novo SPSite("Http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("Xyzzy", "Título xyzzy",
        "Descrición xyzzy", 1033, SPWebTemplate.WebTemplateWIKI, teito, teito);

Miñas pescudas iniciais fallou porque eu estaba a buscar frases como "prestación de un sitio web utilizando o SharePoint modelo de obxecto" and the like.

Se buscar para "Webs.Add()", atoparás unha serie de entradas de blog moi útiles, MSDN articles and SDK documentation that go into depth on this subject. I definitely recommend este sitio.

</final>

Rexístrate para o meu blog.

Technorati Tags:

Integrar fluxos de traballo do SharePoint Deseño con Web Services

Eu fun xogar con accións personalizadas para o SharePoint Deseño por algún tempo (vexa aquí para algunhas cousas detallada, que che interesa).

O meu proxecto actual, we need to do some fairly heavy lifting and we want to use declarative SPD workflow to manage the associated business process.

Longa historia curta, this is entirely possible. I extended my Codeplex project to invoke a "helper service" and now we can invoke a web service directly from an SPD workflow.

Aquí está a sinatura:

 público corda Expedidor(
        GUID Webid, // Aprobada polo ambiente de execución
        GUID SiteID, // Aprobada polo ambiente de execución
        corda ListId, // Aprobada pola RTE (non sei por que isto é unha cadea, non un GUID)
        int ListItemID ListItemID, // Aprobada pola RTE.
        corda XmlMessage) // Pasado polo usuario, segundo declarou o SPD.

Este aproveita o feito de que podemos obter a información de fluxo de traballo importante, como o lugar, lista de ID, etc. This is well documented in several places for those of you interested in creating your own custom actions. The idea is to extract the XML string as provided by the user to dispatch an appropriate procedure. Fun stuff!

Desafortunadamente, este é, obviamente, un billete de ida-down para "Loosey Goosey" anti-pattern terra, but it’s better than hitting a brick wall 🙂

É un anti-patrón se fai iso mesmo que vostede sabe que é un anti-estándar?

I hope to wrap this inside Codeplex in the near future. If you’re interested in me doing so, dáme picar (e-mail ou deixar un comentario) and I’ll be that more enthusiastic about doing it 🙂

</final>

Rexístrate para o meu blog.

Technorati Tags: ,

Domingo divertido: “Eu me pregunta se o seu contrasinal é …”

Eu compras recentemente o xantar para o meu irmán (como de costume) and we ended up talking about funny things that we did at our respective colleges. At my alma mater, Lafayette College, the academic support IT department had a very inclusive way about it. We were given a LOT of rope and I took advantage of that at times.

Dous miñas memorias favoritas relacionan coa miña boa amiga, Gabe. He had made the terrible mistake of telling people his freshman year that "I’m a freshman, pero eu teño pé Sophomore" debido ás varias clases de posicionamento avanzados tomara, etc. Many of us were similarly situated but we didn’t talk about it so much. His senior year, cando o presentou a persoas, we’d say "This is Gabe. He’s a Senior, pero ten pé Sophomore ".

The college had some Sun workstation/servers running X-Window. They had gigantic monitors and the engineers used them for CAD and other boring engineer stuff. We CS people used them to learn programming and, claro, para xogar.

Non fixo como os enxeñeiros ordenador indefensas a moi por iso unha das nosas cousas favoritas a facer sería a de telnet á caixa estaban e executar X-ollo on them. This would pop up a pair of eyes that followed the mouse around on the screen. You could pop up even more and have literally a dozen or more of the X-eye applications running. Intenta non rir a carcajadas cando un enxeñeiro desafortunado intenta pechar ollo X tras ollo X e murmura sobre iso 🙂

We also played X-trek on those boxes. Para iso, tiña que baixar o código fonte, get various dependencies wherever you could find them and build it. I wasn’t a sophisticated C programmer, but I could read header files. I was looking through these and found directives like "#DEFINE MAX_TORPEDO_DISTANCE 10". I played around with that increase range and power for phases and torpedoes, re-construída e despois destruída Gabe a próxima vez que tocamos.

Gabe tamén era un gran fan de un programa de TV chamado Blake 7. I had never seen it, pero iso non me impide de insistir que o Dr. Who is the superior show. As discusións acaloraban ás veces 🙂

Un día, it occurred to me that I could probably guess his UNIX password. I sat down next to him one day and announced in a loud tone, "Eu vou adiviñar o seu contrasinal agora, Gabe." "Yeah, dereito" was his answer. I then logged in, entrou no seu ID de usuario, virou-se para afrontalo lo, escrito e dixo en voz alta, "Eu me pregunta se é B-L-A K-E-7" ? Touch typing has never paid off as handsomely as it did that day.

Semana (ou logo): More computer room antics from college.

Ten algún para compartir? Leave a comment or email me and I’ll publish them here.

</final>

Rexístrate para o meu blog.

Technorati Tags:

Edital Menor: Windows Live Configuración de Seguridade e entrar en contacto con Propietarios espazo

Eu recibín un puñado de mensaxes de persoas a través do built-in "enviar unha mensaxe" Microsoft ofrece función con espazos vivos (que tamén aloxa o meu blog) todos os meses.

Cerca dun terzo do tempo, those users have secured their live spaces account such that I cannot reply. This is some kind of anti-spam feature I assume.

</final>

Explicación Simple: “O valor non se enmarca dentro do rango de esperar.”

Actualización: An anonymous poster left a great comment about internal names. Be sure to read it.

Ao traballar con receptores de eventos e outros códigos que referencias SharePoint elementos de lista a través do modelo de obxecto, Eu moitas veces cometen erros que xeran este erro en tempo de execución:

Erro Conchango.xyzzyEventReceiver receptor cargar e executar eventos xyzzy, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 0dc50a750396c3ac. Additional information is below. : Value does not fall within the expected range.

I think this is a fairly generic error that is potentially caused many different ways. Con todo, one simple explanation is that I’m referencing a field incorrectly. If the name of the field is "Due Date", Debo referencia-como este en un receptor de eventos:

properties.ListItem["Data de caducidade"]

Cando cometer erros ou utilizar o caso mal ao facer referencia ao campo, SharePoint generates the above mentioned runtime error. Por exemplo, iso é malo:

properties.ListItem["Data de caducidade"]

</final>

Rexístrate para o meu blog.

Consello Rápido de Usuario Final: Visto de clasificación nunha biblioteca de documentos, Lista, etc.

Podemos, e non debe crear moitos puntos de vista en listas do SharePoint (bibliotecas de documentos, Contraer personalizadas, etc). SharePoint always lists available views in alphabetical order. We cannot change this using out of the box functionality. If it can be done via customization (e eu non estou seguro que pode), está lonxe de técnico para o usuario final típico.

Se quere controlar a orde en que as listas do SharePoint vistas dispoñibles, simplemente poñer un número ou unha letra para os nomes de vista, como no:

1 – Por tipo de material
2 – Todos os documentos
3 – Data de caducidade

-ou-

A – Por tipo de material
B – Todos os documentos
C – Data de caducidade

I have also created views whose purpose is strictly to feed a KPI. I have been following this naming convention:

Z_KPI_[descrición]

Isto fai que o meu "KPI" exhibicións de aparecer na parte inferior da lista.

</final>

Rexístrate para o meu blog.

Domingo divertido: “Cando eu era un neno”

Como un pai, nalgún lugar ao longo da liña que eu descubrín o "Cando eu era un neno" trick.

O meu fillo, probablemente catro ou cinco anos na época, estaba xogando un globo e como a maioría dos nenos que xogan con globos, he popped it. He was very upset. The world had come to an end. I said to him, "Meniño cando eu era pequeno, Eu tiña un globo e el bateu e, eventualmente,, I got a new balloon." It seemed to help him cope with his loss and led to a fun talk about what it was like when I was a little boy.

That worked well as a consolation technique and I used it a several times over the next period of time. I did get into trouble once when his Monster Rancher 3 creature died. I talked about how my dog, Príncipe, had died in a car accident. Este tempo, súa resposta foi, "Agora eu me sinto mal sobre dúas cousas!" I shied away from using the "when I was a little boy" técnica de consolo despois de que.

Antes do incidente co can morto, con todo, I had also started to use the technique to convince him to do chores. "Cando eu era un neno, Tiven que saír e incorporarse o xornal ", "Limpar o meu cuarto", "Mamá obter a súa cunca de café", etc.

Isto tamén foi moi exitosa por un tempo, but he started to increasingly rebel against the tyranny of my childhood. One event, en particular, marked the end. I told him to bring the garbage cans from curb back to the garage. He argued and I responded, "Cando eu era un neno, I had to take the garbage back to the garage." He responded, "Oh yeah! Well when you were a little boy, Iso foi estúpido!".

</final>

Rexístrate para o meu blog.

Technorati Tags:

Visto e columnas en listas e bibliotecas de documentos non se pode asegurar

Actualización (02/29/08): Este novo proxecto codeplex parece proporcionar un método para fixar columnas individuais: http://www.codeplex.com/SPListDisplaySetting. If you have any experience working with it, por favor, deixe un comentario.

Carteis foro a miúdo unha pregunta como esta: "I have a manager view and and a staff view of a list. How do I secure the manager view so that staff can not use it?"

Tamén a miúdo unha pregunta relacionada: "Quero garantir unha columna de metadatos específico para que os xestores só hai esa columna, mentres que outros non poden sequera velo."

These answers apply to both WSS 3.0 e Moss:

  • SharePoint non ofrecen out-of-the-box soporte para fixar puntos de vista.
  • SharePoint non ofrecen out-of-the-box soporte para columnas de seguridade.

There are several techniques one can follow to meet these kinds of security requirements. Here’s what I can think of:

  • Use out-of-the-box item level security. Views always honor item level security configuration. Event receivers and/or workflow can automate security assignment.
  • Use puntos de vista persoais para "privilexiado" views. These are easy enough to set up. Con todo, debido ao seu "persoal" natureza, these need to be configured for each user. Use standard security configuration to prevent anyone else from creating a personal view.
  • Use un Data View web Part e aplicar algún tipo de AJAXy solución de seguridade de corte.
  • Roll súa propia función de exhibición lista e incorporar o apareza de seguridade no nivel da columna.
  • Modificar as formas de entrada de datos e usar JavaScript xunto co modelo de seguridade a aplicar a nivel de columna de eliminación de seguridade.
  • Use an InfoPath form for data entry. Implement column-level security trimming via web service calls to SharePoint and conditionally hide fields as needed.
  • Roll seu propio ASP.NET función de entrada de datos que aplica a seguridade a nivel de columna de corte.

Ningunha destas opcións son realmente moi grande, pero hai polo menos un camiño a seguir, se precisa, aínda que sexa difícil.

NOTA: Se vai para abaixo calquera destes camiños, non se esqueza de "Accións -> Open with Windows Explorer". You want to be sure that you test with that feature to make sure that it doesn’t work as a "back door" e derrotar ao seu esquema de seguridade.

Se ten outras ideas e experiencias para con columnas de agarre ou vistas, por favor enviar correo-e me ou deixe un comentario e eu vou actualizar esta mensaxe, segundo corresponda.

</final>

Rexístrate para o meu blog.

Technorati Tags:

Consello Rápida: Números de versión BDC ADF son o seu amigo

Se vostede é un manual de codificación de ficheiros ADF e facendo unha morea de código / Importación / ciclos de probas, use the version number to make your life easier.

Eu odio admitir iso, pero ata esta semana, I was always deleting the ADF and re-importing it. This would break my business data columns and make me re-wire them. All unnecessary.

File this under "it’s obvious once you see it".

Exemplo:

<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" Nome="xyzzyDocumentReview" xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">

Cambiar esta versión e re-importación e da columna de datos de empresas existentes utiliza a versión actualizada automaticamente con ningunha configuración adicional necesaria.

</final>

Rexístrate para o meu blog.

Technorati Tags:

Solución: Picker BDC Mostra só unha columna de resultados

En miñas tentativas en curso na subministración dun columna de investigación máis útil usar BDC, I hit a wall with the BDC picker. If you haven’t see it, the BDC picker is similar to a people picker except that it works with columns of type "business data".

Accede o seleccionador, premendo na icona de unha columna de datos corporativos libro aberto, como se mostra:

imaxe

The above image shows a business data column called "Master Document Id". That column is connected, vía BDC, to a web service. The web service returns two columns of information: Document ID and Title. The business purpose here is to provide a "this document is based on" función. Users select a "master" documento e cando gardar, un receptor de eventos copias campos de metadatos do mestre referenciada.

Por defecto, the BDC picker looks like this when I search for a document whose ID = "38":

clip_image002

Isto é útil, but not good enough. People don’t think in terms of IDs, they think in terms of titles and/or other meta data. The picker allows you to search on other columns (e.g. Título) pero non vai amosar a lista actual de títulos se atopa, só a súa DocId está como se mostra aquí:

clip_image002[1]

(A pantalla non é tan grande porque eu non incorporarse unha busca que retorna todos os resultados válidos, pero podes ver que houbo algúns resultados, el só mostraría DocId de, nin títulos).

I searched high and low for the answer to this and failed. O meu compañeiro, o venerábel Jonathan Bradshaw, had faced and solved this issue. When I reached out to him for help, el me apuntou na dirección correcta.

Configure the picker to show multiple columns via the "ShowInPicker" propiedade no ADF:

<Propiedade Nome="ShowInPicker" Tipo="System.Boolean">certo</Propiedade>

En máis detalle:

  <!-- Título -->
  <TypeDescriptor TypeName="System.String" Nome="Título" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Título</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Propiedades>
      <Propiedade Nome="DisplayByDefault" Tipo="System.Boolean">certo</Propiedade>
      <Propiedade Nome="ShowInPicker" Tipo="System.Boolean">certo</Propiedade>
    </Propiedades>
  </TypeDescriptor>

Setting this property does introduce a minor problem. As soon as you set it once, you need to set it for every column you want to show. No meu caso, BDC picker showed DocId by default. Con todo, once I added "ShowInPicker" Título, DocId no longer displayed. I solved that by explicitly setting the ShowInPicker property for Doc ID.

Aquí está o resultado:

imaxe

(I’ll explain the odd-looking "168 – CamlSchema.xsd" construction in a future blog post. En resumo, é unha cadea concatenada que permite un pouco mellor experiencia do usuario).

Por suposto, escribir este blog, I just did a search for "ShowInPicker" e atopei moitos logros, incluíndo este: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. It explains the meaning of that property along with some other good BDC stuff.

</final>

Rexístrate para o meu blog!

Technorati Tags: