Padrões de processamento do campo personalizado
Você tem uma ampla variedade de opções para controle detalhada de como seu personalizado campos são processados. Este tópico discute alguns comum padrões e indica como você poderá modificá-los para atender às suas necessidades.
Observação
Este tópico é sobre processamento personalizado campos e seus valores.ÉNão Sobre processamento a variável propriedades de personalizado campo Tiposon the New Site Column, Change Site Column, Create Column, and Change Column pages.Para informações sobre processamento a variável campo propriedades de personalizado tipos campo, consulte Processamento da propriedade Tipo do campo personalizado.
Usando somente RenderPatterns
A maneira mais simples processar um personalizado tipo de campo não usa o campo processamento Controles ou campo processamento modelos (veja abaixo). Em vez disso, processamento campo em todos os modos controle (novo, Editar e Exibir) as well as nos modos de exibição lista é feito completamente por meio de s definidos um campo definição b3315997-671f-4c29-9518-48cc4592f205 RenderPattern. Mas esse método limita sua lógica validação para o que pode ser realizado em scripts. Por esse motivo, provavelmente você irá localizar que você pode usar RenderPatterns apenas para processamento em modos de exibição lista e em modo de exibição, onde validação não é um emitir.
Nos modos novos e Editar, você geralmente precisará criar um controle processamento campo 12616aab-f427-4abe-9e5b-8b9085a9740e e at least um campo processamento modelo.
O controle de processamento e sistema de modelo
Cada controle processamento campo tem at least um modelo processamento campo associado com ele. A associação é feita por ter o controle processamento campo mantêm uma referência para a identificação do modelo de processamento campo em uma de suas propriedades. Ao processar-tempo, aparência Windows SharePoint Services 3.0 wssversion3 até o modelo necessário pesquisando as identificações de todos os modelos de processar declarados em arquivos .ascx em C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES
(todas do qual carregar quando inicia o aplicativo da Web). CreateChildControls M:Microsoft.SharePoint.WebControls.BaseFieldControl.CreateChildControls método do controle processamento geralmente faz um toque final de processamento o campo, mas a maioria do trabalho processamento é feito o modelo.
O padrão mais comuns
O padrão do campo processamento configuração que você irá localizar mesmo usando com mais freqüência como você desenvolver personalizado tipos campo tem estas características:
O personalizado definição (no arquivo de fldtypes*.xml) do campo contém um DisplayPattern DisplayPattern de RenderPattern que processa o campo na lista Modos de Exibição e no modo de exibição.
Há um controle processamento e ele é associado com processamento apenas um modelo. O controle usa seus TemplateName propriedade para do especificar modelo ID.
Este modelo um é usado para fornecer a maior parte de processamento do campo nos modos novos e em Editar.
CreateChildControls M:Microsoft.SharePoint.WebControls.BaseFieldControl.CreateChildControls método do controle processamento atribui valores usar como padrão a controles do controle de processamento filho no novo modo. Ele atribui do campo atual valores aos controles filho no modo Editar. (Ele faz nada no modo de exibição.) Ele também pode fazer outro trabalho processamento "toque final" such as atribuição uma classe folhas de estilo em cascata para um filho Label controle T:System.Web.UI.WebControls.Label.
A validação lógica é implementada por Validate, IsValid e membros ErrorMessage P:Microsoft.SharePoint.WebControls.BaseFieldControl.ErrorMessage do controle processamento de campo e pela subjacente GetValidatedString método M:Microsoft.SharePoint.SPField.GetValidatedString(System.Object) do tipo de campo. ( Validate pode ser chamado por CreateChildControls.)
Padrões mais complexos
Esta seção descreve algumas das maneiras que você pode se desviaram do padrão padrão ao seu personalizado tipo de campo requê-lo.
Usando um modelo no modo de exibição
Pode haver ocasiões quando é preferível usar um modelo processamento campo, em vez de um RenderPattern, mesmo para modo de exibição. De exemplo, você pode ter personalizado muitos tipos campo que são praticamente idênticos na sua aparência modo de exibição. Um RenderPattern é difícil reutilizar através de vários tipos campo, exceto copiando e colando de uma fldtypes*.xml para outro (ou em um tal arquivo). Mas se você usou esse método, e se você precisar fazer uma alteração de RenderPattern, você precisa localizar todos os lugares onde você copiou-lo. Por esse motivo, você pode preferir usar um modelo processamento campo que pode ser relacionado por muitos controles processamento diferentes.
Não é provável que o mesmo modelo pode ser usado para todos os modos controle três. Os modos de novo e editar exigem interativo controla como como caixas texto editável, verificar caixas, botões e controles drop-down list. Mas o modo de exibição normalmente requer somente Label controles Literal T:System.Web.UI.WebControls.Literal ou outros controles exibir estático. Por esse motivo, você provavelmente precisará criar um modelo diferente processamento para modo de exibição. Você especificar este modelo (por identificação) no DisplayTemplateName P:Microsoft.SharePoint.WebControls.BaseFieldControl.DisplayTemplateName propriedade.
O modelo processamento que é realmente usado para processar o campo em qualquer contexto fornecido é aquele retornado pelo ControlTemplate P:Microsoft.SharePoint.WebControls.TemplateBasedControl.ControlTemplate propriedade do controle de processamento. Seu acessador get get seleciona dentre os modelos processamento associado com o controle processamento, usando critérios de decisão such as:
O atual contexto HTTP
O modo controle
Se o campo é exigido
Se o campo, se numéricos, deve ser processado como uma porcentagem
Se a item da lista ou não uma pasta
Você pode substituir essa propriedade e ter seu acessador get get verificar o modo controle e retornar DisplayTemplate quando o modo é exibir. (Unless it has been explicitly set to some other template, DisplayTemplate returns the template identified by DisplayTemplateName.) Unless you need other decision logic in the get accessor for ControlTemplate, you can simply have it call the base property's get accessor in New or Edit mode.
Observação
An alternate means of designating a rendering template in Display mode is to have the CreateChildControls method assign DisplayTemplateName to TemplateName in Display mode.(Unless it has been overridden, ControlTemplate returns Template and unless the latter's get accessor has been overridden, it returns the template identified by TemplateName.) A possible weakness of this approach is that the code does not run in a context in which the field is not being rendered, such as when, for debugging purposes, you are checking the value of ControlTemplate in the object model.
Outras situações que requer vários modelos de processamento
In addition to Template, TemplateName, DisplayTemplate, and DisplayTemplateName; you can also work with AlternateTemplate, AlternateTemplateName.
Use um alternativo modelo para processar seu personalizado campo em qualquer contexto página na qual o modelo principal não atende os requisitos. Alguns exemplos são listados aqui:
Se o campo é exigido em algumas listas mas não em outros, você pode ter um alternativo modelo que seja apenas como o principal Except that-adiciona um indicador, digamos, um asterisco vermelho, que o campo é exigido em listas específicas. Then have the get accessor of ControlTemplate check the Required property of the underlying field and return either Template or AlternateTemplate as appropriate.
Se você planeja usar muitos personalizado campo tipos que irá processar de forma quase idêntica, talvez seja possível atingir a melhor codificar reutilização criando separar modelos para uso em modos de novo e em Editar. O antigo seria seria atribuir valores usar como padrão para objetos filho e o segundo atual atribuir valores. Isso seria habilitar a evitar repetição a lógica atribuída no CreateChildControls M:Microsoft.SharePoint.WebControls.BaseFieldControl.CreateChildControls de cada um do personalizado classes tipo de campo. Novamente, o acessador get get de ControlTemplate poderia determinar qual modelo é usado com base no modo de controle.
Usando um alternativo modelo também poderá ser útil quando o campo precisa processamento especial em determinados Web sites, coleções site ou aplicativos da Web. Considere, de exemplo, um site criado para pessoas com uma deficiência visual, such as cegueira para cor. O acessador get get de ControlTemplate pode examinar o valor de RenderContext para ver se o modelo especial é necessária e retornar o apropriado modelo.
Para personalizado campo tipos que herdam SPFieldNumber e que às vezes, mas nem sempre, precisará ser processado como porcentagens, tendo dois modelos diferentes processamento podem ser uma proteção tempo desenvolvimento ótima. Substitui o acessador get de ControlTemplate para responder ao valor do Microsoft.SharePoint.SPFieldNumber.ShowAsPercentage P:Microsoft.SharePoint.SPFieldNumber.ShowAsPercentage propriedade.
Adicionando mais associações de modelo
Você puder, claro, adicionar mais processamento associações modelo para o controle processamento campo que você derivar de BaseFieldControl. Recomendamos que você siga esse padrão:
Criar um novo campo particular nomeado de tipo ITemplate.
Criar nova propriedade pública como um wrapper em torno de campo particular e dê a ele um nome, como circumstanceModelo, onde circunstância identifica as circunstâncias em que você previr usando o modelo.
Criar uma segunda propriedade pública que retorna um String e nomeie- circunstância TemplateName.
O acessador get get para circumstanceModelodeve retornar o campo particular somente se o último não é NULL null. Caso contrário, ele deve retornar o ITemplate que está nomeado por circunstância TemplateName. Para fazer isso, use o GetTemplateByName método M:Microsoft.SharePoint.WebControls.SPControlTemplateManager.GetTemplateByName.
Substituir o acessador get de ControlTemplate para retornar circunstância Modelo é sempre circumstance true.
Usando controles personalizados da Web como modelos
Seu personalizado controle processamento campo também herdarão duas propriedades ITemplate T:System.Web.UI.ITemplate:
CustomTemplate e CustomAlternateTemplate. Essas duas propriedades são marcadas com o atributo [PersistenceMode(PersistenceMode.InnerProperty)]
[PersistenceMode(PersistenceMode.InnerProperty)]. Isso significa que o ITemplate objetos que retornarem são compilado e eles persistir dentro de controle processamento campo como marcas aninhadas. Há várias vantagens em usar pré-compilado modelos; de exemplo, eles podem ser adicionados a uma página em um designer visual such as Microsoft Office do SharePoint Designer 2007 ou Microsoft Visual Studio 2005 arrastando e soltando-los a partir de designer caixa de ferramentas. Mas há desvantagens bem. Para obter mais informações sobre controles de usuário da Web e personalizado da Web controles, consulte Web User Controls and Web Custom Controls e PersistenceModeAttribute.
Como o campo de processamento para dispositivos móveis difere do processamento de campos para computadores
Em Windows SharePoint Services 3.0, processamento campo com personalizado campo processamento Controles para dispositivos móveis é semelhante ao campo processamento com personalizado campo processamento Controles para computadores. Mas manter essas diferenças em mente:
Páginas móveis são um conjunto inteiramente diferente de páginas a partir de regular páginas e eles fazem referência um conjunto diferente de RenderingTemplate s T:Microsoft.SharePoint.WebControls.RenderingTemplate.
Móvel RenderingTemplate T:Microsoft.SharePoint.WebControls.RenderingTemplate s são declaradas em
MobileDefaultTemplates.ascx
, nãoDefaultTemplates.ascx
.Mobile field rendering controls have their own namespace, Microsoft.SharePoint.MobileControls (rather than Microsoft.SharePoint.WebControls) and they derive from classes in ASP.NET's System.Web.UI.MobileControls, rather than System.Web.UI.WebControls.
Hierarquia de herança para controles processamento campo móvel é um pouco diferente do regular campo processamento Controles. For example, the functions of the TemplateBasedControl and FormComponent in regular field rendering are combined in the SPMobileComponent class.
Campo Personalizado processamento controles que você cria para mais contextos móveis dependem de CreateChildControls CreateChildControls método do controle para processar um campo e correspondentemente menor no modelo de processamento, que é a maiúsculas e minúsculas para personalizado campo processamento controles que você cria para navegadores computador. Além disso, para personalizado controles móveis processamento não geralmente você irá substituir o CreateChildControls método próprio. Instead, you will typically override one or more of four other methods that are called by CreateChildControls: CreateControlForDisplay, CreateControlForEdit, CreateControlForNew, and CreateControlForView. Para obter mais informações sobre o processamento página móvel e personalizado campo processamento Controles, consulte Página móvel de processamento do sistema e Walkthrough: Criar um campo personalizado de processamento de controle para páginas do Mobile.
Consulte também
Tarefas
Walkthrough: Criar um tipo de campo personalizado
Walkthrough: Criar um campo personalizado de processamento de controle para páginas do Mobile
Conceitos
Tipos de campo personalizado
Classes do campo personalizado
A validação de dados do campo personalizado
Classes do valor do campo personalizado
Definição Tipo de campo personalizado
Processamento da propriedade Tipo do campo personalizado
Controles Editor para campos Tipo propriedades
Campo de Processamento Controles
Campo de processamento de modelos
Página móvel de processamento do sistema