arquivos Mensais: Fevereiro 2008

Anúncio público menor: As configurações de segurança ao vivo de Windows e entrar em contato com os proprietários do espaço

Recebo um punhado de mensagens de indivíduos através do built-in "Enviar uma mensagem" função Microsoft fornece com espaços ao vivo (que também hospeda o meu blog) todos os meses.

Cerca de um terço do tempo, os usuários têm garantido conta seus espaços ao vivo tal que eu não posso responder. Isso é algum tipo de característica de anti-spam, que eu assumo.

</fim>

Explicação simples: “Valor não se enquadra no intervalo esperado.”

ATUALIZAÇÃO: Um cartaz anônimo que deixou um grande comentário sobre nomes internos. Certifique-se de lê-lo.

Quando se trabalha com receptores de eventos e outros códigos que faz referência a itens de lista do SharePoint por meio do modelo de objeto, Eu muitas vezes cometem erros que geram esse erro em tempo de execução:

Erro ao carregar e executar o receptor de evento Conchango.xyzzyEventReceiver em xyzzy, Versão = 1.0.0.0, Cultura = neutro, PublicKeyToken = 0dc50a750396c3ac. Informações adicionais estão abaixo. : Valor não se enquadra dentro do intervalo esperado.

Acho que é um erro bastante genérico que é potencialmente causado muitas maneiras diferentes. No entanto, uma explicação simples é que eu estou fazendo referência a um campo incorretamente. Se o nome do campo "Data de vencimento", Eu deve referenciá-lo como este em um receptor de eventos:

Propriedades.ListItem["Due Date"]

Quando escrever mal ou usar o caso errado ao fazer referência o campo, SharePoint gera o acima mencionado erro de tempo de execução. Por exemplo, Isso é errado:

Propriedades.ListItem["due Date"]

</fim>

Subscreva ao meu blog.

Dica rápida do usuário final: Vistas de classificar em uma biblioteca de documentos, Lista, etc.

Nós podemos, deveria e criar muitos pontos de vista em listas do SharePoint (bibliotecas de documentos, listas personalizadas, etc). Modos de exibição disponíveis em ordem alfabética de listas do SharePoint sempre. Não podemos mudar isso usando sem a funcionalidade de caixa. Se isso pode ser feito através de personalização (e não tenho certeza se pode), é muito técnico para seu usuário final típico.

Se você quiser controlar a ordem na qual SharePoint lista modos de exibição disponíveis, simplesmente colocar um número ou uma carta para o nome de exibição, como em:

1 – Por tipo de Material
2 – Todos os documentos
3 – Data de vencimento

-ou-

A – Por tipo de Material
B – Todos os documentos
C – Data de vencimento

Eu também criei vistas cujo objetivo é estritamente alimentar um KPI. Tenho vindo a seguir essa Convenção de nomenclatura:

Z_KPI_[Descrição]

Isso faz com que o meu "KPI" vistas a aparecer na parte inferior da lista.

</fim>

Subscreva ao meu blog.

Domingo engraçados: “Quando eu era um menino”

Como um pai, em algum lugar ao longo da linha que eu descobri o "quando eu era um menino" truque.

Meu filho, provavelmente quatro ou cinco no momento, estava jogando um balão e gosta de meninos mais pequenos que jogam com balões, Ele fez isso. Ele estava muito chateado. O mundo tinha chegado ao fim. Eu disse a ele, "quando eu era menino, Eu tinha um balão e ele apareceu e, eventualmente,, Tenho um novo balão." Ele parecia ajudá-lo a lidar com sua perda e levou a um divertido falar sobre como era quando eu era um garotinho.

Que funcionou bem como uma técnica de consolo e eu usei um várias vezes durante o próximo período de tempo. Eu consegui uma vez em apuros quando seu Monster Rancher 3 criatura morreu. Eu falei sobre como meu cachorro, Príncipe, tinha morrido em um acidente de carro. Desta vez, sua resposta foi, "Agora sinto coisas ruins sobre dois!" Eu evitava usando o "quando eu era um garotinho" técnica para consolação depois disso.

Antes do incidente do cão morto, no entanto, Eu também tinha começado a usar a técnica para convencê-lo a fazer tarefas. "Quando eu era um garotinho, Eu tive que sair e comprar o jornal", "limpar o meu quarto", "se a mamãe a xícara de café", etc.

Isso também foi muito bem sucedido por um tempo, Mas ele começou a cada vez mais se rebelar contra a tirania da minha infância. Um evento, em particular, marcou o fim. Disse-lhe para trazer as latas de lixo da calçada na garagem. Ele argumentou, e eu respondi, "Quando eu era um garotinho, Eu tive que levar o lixo de volta para a garagem." Ele respondeu, "Oh sim! Bem, quando você era um menino, Isso foi estúpido!".

</fim>

Subscreva ao meu blog.

Technorati Tags:

Exibições e colunas em listas e bibliotecas de documentos não podem ser protegidas

ATUALIZAÇÃO (02/29/08): Este novo projeto codeplex parece fornecer um método para proteção de colunas individuais: http://www.codeplex.com/SPListDisplaySetting. Se você tem alguma experiência em trabalhar com ele, por favor, deixe um comentário.

Cartazes Fórum freqüentemente uma pergunta como esta: "Tenho uma visão de gerente e e uma visão pessoal de uma lista. Como para proteger a vista do gerente para que a equipe não pode usá-lo?"

Eles também freqüentemente uma perguntam relacionada: "Quero proteger uma coluna de metadados específicos, de forma que somente os gestores podem editar essa coluna enquanto outros não podem vê-lo."

Estas respostas se aplicam a ambos WSS 3.0 e musgo:

  • SharePoint não oferece suporte out-of-the-box para proteger visualizações.
  • SharePoint não oferece suporte out-of-the-box para colunas de segurança.

Existem várias técnicas podem seguir para encontrar estes tipos de requisitos de segurança. Eis o que penso:

  • Usar a segurança de nível de item de out-of-the-box. Exibições sempre honrar a configuração de segurança em nível de item. Receptores de evento e/ou fluxo de trabalho pode automatizar a atribuição de segurança.
  • Use pontos de vista pessoais para "privilegiado" Modos de exibição. Estas são bastante fáceis de configurar. No entanto, devido à sua "personal" natureza, Estes precisam ser configurados para cada usuário. Use a configuração de segurança padrão para impedir que alguém criando uma visão pessoal.
  • Usar uma web part de exibição de dados e implementar algum tipo de solução de aparamento de segurança AJAXy.
  • Rolar sua própria funcionalidade de exibição de lista e incorporar o aparamento de segurança no nível de coluna.
  • Modificar as formas de entrada de dados e usar JavaScript em conjunto com o modelo de segurança para implementar o aparamento de segurança de nível de coluna.
  • Usar um formulário do InfoPath para entrada de dados. Implementar o aparamento de segurança de nível de coluna através de chamadas de serviço web para SharePoint e condicionalmente ocultar campos conforme necessário.
  • Rolo de sua própria função de entrada de dados do ASP.NET que implementa o aparamento de segurança em nível de coluna.

Nenhuma dessas opções são realmente é ótima, Mas há pelo menos um caminho a seguir, se você precisa, mesmo se é difícil.

OBSERVAÇÃO: Se fores por qualquer um desses caminhos, Não se esqueça de "ações-> Abrir com Windows Explorer". Você quer ter certeza de que você teste com esse recurso para certificar-se de que ele não funciona como uma "porta dos fundos" e derrotar o seu esquema de segurança.

Se você tiver outras idéias para ou experiências com fixar colunas ou pontos de vista, por favor correio eletrónico a mim ou deixe um comentário e eu vou atualizar esta postagem conforme apropriado.

</fim>

Subscreva ao meu blog.

Technorati Tags:

Dica rápida: Números de versão do ADF de BDC são seu amigo

Se você estiver codificação manual ADF arquivos e fazendo um monte de ciclos de teste de importação de código, Use o número de versão para facilitar a sua vida.

Eu odeio admitir isso, mas até esta semana, Eu estava sempre apagar o ADF e importando novamente. Isso iria quebrar minhas colunas de dados de negócios e fazer-me re-conectá-los. Todos os desnecessários.

Este arquivo sob "é óbvio, uma vez que você vê-lo".

Exemplo:

<LobSystem
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog BdcMetadata" Tipo="WebService" Versão="1.2.0.0" Nome="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Alterar essa versão e a reimportação e a coluna de dados de negócios existente usa a versão atualizada automaticamente sem qualquer configuração adicional necessária.

</fim>

Subscreva ao meu blog.

Technorati Tags:

Solução: Selecionador de BDC mostra apenas uma coluna de resultados

Em minhas tentativas em curso para fornecer uma coluna de pesquisa mais útil usando BDC, Eu bati uma parede com o selecionador de BDC. Se você não vê-lo, o seletor de BDC é semelhante a um seletor de pessoas exceto que funciona com colunas do tipo "dados de negócios".

Você acessar o seletor de clicando no ícone do livro aberto de uma coluna de dados de negócios como mostrado:

imagem

A imagem acima mostra uma coluna de dados de negócio chamada "Id do documento mestre". Essa coluna é conectada, via BDC, para um serviço da web. O serviço da web retorna duas colunas de informações: Título e ID do documento. A finalidade do negócio aqui é fornecer um "este documento baseia-se na" função. Os usuários selecionam um mestre"" documento e quando eles salvar, um receptor de eventos copia campos de meta dados do mestre referenciado.

Por padrão, o seletor de BDC fica assim quando eu procurar um documento cujo ID = "38":

clip_image002

Isso é útil, Mas não é bom o suficiente. As pessoas não pensam em termos de IDs, Eles pensam em termos de títulos e/ou outros dados de meta. O seletor permite que você pesquise em outras colunas (EG. Título) Mas não vai mostrar a lista real de títulos que encontrei, apenas seu DocId é como mostrado aqui:

clip_image002[1]

(O tiro de tela não é tão grande, porque eu não escolhi uma busca que retorna qualquer resultado válido, Mas você pode ver que se tinha encontrado alguns resultados, Ele só teria mostrado do DocId, títulos não).

Procurei a resposta a esta de alta e baixa e falhou. Meu colega, o Venerável Jonathan Bradshaw, tinha enfrentado e resolvido esse problema. Quando entrei em contato com ele para ajuda, Ele me apontou na direção certa.

Configurar o seletor de para mostrar várias colunas através do "ShowInPicker" Propriedade no ADF:

<Propriedade Nome="ShowInPicker" Tipo="System. Boolean">verdadeiro</Propriedade>

Em mais detalhes:

  <!-- Título -->
  <TypeDescriptor TypeName="System." Nome="Título" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Título</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Propriedades>
      <Propriedade Nome="DisplayByDefault" Tipo="System. Boolean">verdadeiro</Propriedade>
      <Propriedade Nome="ShowInPicker" Tipo="System. Boolean">verdadeiro</Propriedade>
    </Propriedades>
  </TypeDescriptor>

Configuração esta propriedade apresenta um problema menor. Tão logo você configurá-lo uma vez, Você precisa configurá-lo para cada coluna que você deseja mostrar. No meu caso, Selecionador de BDC mostrou DocId por padrão. No entanto, uma vez eu adicionei "ShowInPicker" a título, DocId não será mais exibido. Eu resolvi isso explicitamente definindo a propriedade ShowInPicker para Doc ID.

Aqui está o resultado:

imagem

(Vou explicar o estranho-olhando "168 – CamlSchema.xsd" construção em um post futuro. Em suma, é uma seqüência de caracteres concatenada que permite uma experiência de usuário um pouco melhor).

É claro, ter escrito esta entrada de blog, Fiz uma busca por "ShowInPicker" e encontraram numerosos sucessos, inclusive este: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Explica o significado dessa propriedade juntamente com outras BDC coisas boas.

</fim>

Subscreva ao meu blog!

Technorati Tags:

Rápido & Fácil: Crie uma pasta e atribua um tipo de conteúdo (Ou, Ter seus KPIs e comê-los também)

A fim de contornar um problema KPI Eu escrevi sobre aqui, Eu fiz alguns testes e descobriu o trabalho do KPI é contra pastas com meta dados da mesma maneira que eles trabalham contra documentos ou listam itens. Provei-o para fora, criando um novo tipo de conteúdo com base no tipo de conteúdo de pasta e em seguida, adicionado alguns campos. Eu criei alguns indicadores e provar a mesmo que KPIs funcionam como esperado. Isso foi notícia bem-vinda. Não é perfeito, Porque o detalhamento que você começ de KPI contra as pastas não é exatamente o que você quer. Isto não é mais uma desvantagem, no meu caso, porque 1) os usuários finais não conhecem nada melhor e 2) o detalhamento vai para uma pasta. Clique o nome da pasta e eles estão no item. Dois cliques em vez de um, o que não é o fim do mundo.

Isso fluiu muito bem com o trabalho que estava fazendo. Estou criando uma pasta para cada documento que obtém carregado. Isto é feito através de um receptor de eventos. Como resultado, é um pedaço de bolo para manter o a pasta pai meta dados em sincronia com os dados de meta orientada por KPI do arquivo em si, desde que a canalização já está em vigor. This allows me to have my KPI’s and eat them too 🙂

Eu modifiquei o receptor de eventos para adicionar a pasta e em seguida, defina o tipo de conteúdo da pasta esta nova para meu tipo de conteúdo personalizado KPI-amigável. Este trecho de código fez o truque:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Documentos").Subpastas;
  SPFolder addedFolder = srcFolders.Add(Propriedades.ListItem.ID.ToString());
  SPContentTypeId kpiCT = Novo SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item[Identificação de tipo de conteúdo""] = kpiCT;
  addedFolder.Item.Update();

Para localizar o ID do tipo de conteúdo real, Eu acessada através de configurações do site, que tipo de conteúdo e copiar/colar é da URL como mostrado:

imagem

</fim>

Subscreva ao meu blog!

Rápido e fácil: Obter o SPFolder de um SPListItem em um receptor de eventos

Eu odeio admitir isso, Mas lutei com um presente todo dia. Meu receptor de eventos precisa atualizar um campo de sua pasta pai. Isso pouco mostra como fazê-lo:

privada privatevoid UpdateParentFolder(SPItemEventProperties Propriedades)
{

SPFolder thisItemFolder = Propriedades.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ Status de aprovação"] = "Good news, todos os!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

Neste caso, Estou trabalhando com uma biblioteca de documentos e as propriedades são provenientes de um evento ItemAdded.

O truque é que você não pode obter o SPFolder do item diretamente do item propriamente dito (ou seja. Propriedades.ListItem.Folder é nulo). Em vez disso, ir para o arquivo associado do item lista e obter a pasta do arquivo.

</fim>

Subscreva ao meu blog!

Ainda um outro receptor de eventos depuração truque

Tenho certeza que não sou a primeira pessoa a chegar a este. No entanto, Eu não notei qualquer um publicar um truque como esse desde que comecei a prestando atenção à Comunidade em julho. Assim, Eu pensei que eu ia postar essa dica rápida e fácil de depurar.

Estou trabalhando em um receptor de eventos que começou a gerar o erro na 12 colméia:

Erro ao carregar e executar o receptor de evento Conchango.xyzzyEventReceiver em xyzzy, Versão = 1.0.0.0, Cultura = neutro, PublicKeyToken = blahbalhbalh. Informações adicionais estão abaixo. : Referência de objeto não definida para uma instância de um objeto.

Eu não sabia onde eu tinha introduzido este bug, porque eu tinha feito muitas coisas em um dos meus ciclos de código/implantar/teste.

Eu tentei Esta solução para obter o meu pdb lá com as esperanças do SharePoint que 12 colméia mostraria o rastreamento de pilha, Mas sem sorte. Não sei se é possível e se alguém faz, por favor me avise 🙂

Eu sei que é possível escrever suas próprias mensagens de log para o 12 colméia. Sinceramente, Eu queria algo um pouco menos assustador e mais rápido para implementar.

Ocorreu-me que pelo menos consigo algumas informações básicas de rastreamento por capturar e relançar exceções genéricas como esta:

  Tente {
    UpdateEditionDate(Propriedades);
  }
  pegar (Exceção e)
  {
    jogar Novo Exceção("Despachante, UpdateEditionDate(): Exceção: [" + e.ToString() + "].");
  }

Isto apareceu na 12 colmeia desta forma:

Erro ao carregar e executar o receptor de evento Conchango.xyzzyEventReceiver em xyzzy, Versão = 1.0.0.0, Cultura = neutro, PublicKeyToken = blahblahblah. Informações adicionais estão abaixo. : Despachante, UpdateEditionDate(): Exceção: [NullReferenceException.: Referência de objeto não definida para uma instância de um objeto. em Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties Propriedades) em Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties Propriedades, String eventDescription)].

Isso me deu todos os detalhes que eu precisava para rastrear esse problema em particular e pretendo usá-lo muito daqui para frente.

</fim>

Subscreva ao meu blog!