Compartilhar via


Classes do valor do campo personalizado

Se você criar um personalizado classe campo que requer um estrutura de dados especial para dados de campo e essa estrutura não é com suporte pela classe campo pai a partir do qual você é derivação seu personalizado classe campo, você pode criar uma classe valor do campo para conter dados seus campo.

Observação

Seu personalizado tipo de dados pode ser uma estrutura ? uma "estrutura" ? as well as uma classe; Mas para fins de simplicidade na instrução, a Windows SharePoint Services 3.0 SDK pressupõe que uma classe é sempre usado.

Você não precisa derivar o personalizado classe valor do campo de qualquer classe específica. Isso é verdadeiro mesmo para personalizado que derivar de classes campo que já possuem classes campo associado classes valor do campo. De exemplo, se você criar um personalizado campo classe que herda do SPFieldMultiColumn T:Microsoft.SharePoint.SPFieldMultiColumn classe, uma classe valor do campo para que personalizado campo classe não precise herdam o SPFieldMultiColumnValue T:Microsoft.SharePoint.SPFieldMultiColumnValue classe.

Recomendamos que você use este convenção de nomenclatura para seu personalizado classes valor:

field_type_name FieldValue

--de exemplo, TargetDateFieldValue Ou RegularExpressionFieldValue . (The special value classes that ship with Windows SharePoint Services 3.0 were created before this naming convention was determined and they follow the pattern SPField field_type_name Valor Como SPFieldMultiColumnValue.)

Construtores usados com Classses do valor do campo personalizado

Um personalizado classe valor do campo deve implementar pelo menos dois Construtores e normalmente apenas dois. Com somente raras exceções, um não tem parâmetros e o outro utiliza um parâmetro String T:System.String. O segundo construtor converte o String para um valor do personalizado tipo. Se o personalizado tipo é complexo e String deve ter uma estrutura que pode ser analisada.

Se a classe é derivado de uma da SPField field_type_name Valor Classes e, em seguida, esses construtores será normalmente apenas chamar o construtor de base. A seguinte é um exemplo de valor típico classe construtores quando a classe valor deriva de outra classe:

                    public RegularExpressionFieldValue()
  : base() { }

public RegularExpressionFieldValue(string value)
  : base(value) { }

Em alguns casos, talvez seja necessário construtores adicionais. De exemplo, se seu personalizado tipo é baseado em um campo interno matriz, você pode desejar um construtor que usa um parâmetro Int32 T:System.Int32 para inicializar o tamanho de matriz, mas não todos os membros matriz específico. Talvez também seja necessário parâmetros adicionais em seus construtores básicos dois. De exemplo, se seu personalizado valores do tipo incluem um contexto-relativo componente e, em seguida, você talvez precise adicionar uma SPContext T:Microsoft.SharePoint.SPContext parâmetro ou talvez um SPWeb ou parâmetro SPSite T:Microsoft.SharePoint.SPSite. Consulte os construtores da SPField field_type_name Valor Classes de exemplos.

Usando a Diretiva [Serializable]

Quase qualquer declaração de classe valor do campo deve ter o a diretiva [Serializable] [serializable] adicionada a ela so that seus objetos podem ser serializado. Isso significa que você deve também adicionar. Mas não deve fazer isso quando os valores objeto de classe são contexto-relativo de maneira que torna impossível para meaningfully persistir e restaurar os valores de objeto. SPFieldLookupValue é um exemplo de uma classe valor do campo cuja declaração não usa a diretiva [Serializable] [serializable]: valores desse tipo são sempre temporários.

Quando você marca a classe com a diretiva [Serializable, você deve implementar o ToString ToString método para converter o valor do campo em um formato seqüência de caracteres que é usado para armazenamento de dados. (Mas você não têm necessariamente para substituir o método quando sua classe herda da classe valor do campo Outro.)

Observação

O SPFieldfield_type_nameValorClasses que podem ser serializado e que enviar com Windows SharePoint Services 3.0 todos substituir o ToString método ToString rather than implementar o ISerialization T:System.Runtime.Serialization.ISerialization classe.Recomendamos que você siga esse padrão: Fazer não implementar a interface ISerialization T:System.Runtime.Serialization.ISerialization.

Para obter mais informações sobre o SerializableAttribute, consulte SerializableAttribute.

Acessando valores do campo personalizado a partir de classe do campo personalizado

Campo Personalizado classes que exigem personalizado classes valor do campo geralmente serão necessário substituir um ou mais dos métodos e propriedades do SPField classe, especialmente aqueles que ler ou gravação de personalizado objetos valor do campo.

Observação

For most of these members, the implementation in SPField does nothing useful; for example, GetFieldValue simply returns what was passed to it, and GetValidatedString simply calls the ToStringmétodo de classe de valor (que não contenha qualquer lógica validação).Por esse motivo, se sua classe tipo de campo for derivado diretamente do SPField e, em seguida, vocêDeveFornece substituições para qualquer um desses membros que você precisará usar para sua finalidade.Recomendamos que, sempre que possível, você derivar seu personalizado classe campo de uma das classes que derivar de SPField.

  • DefaultValue P:Microsoft.SharePoint.SPField.DefaultValue, como um seqüência de caracteres, um valor usar como padrão que pode ser usado para o campo quando um determinado item da lista não tiver nenhum valor no campo.

  • DefaultValueTyped retorna um valor usar como padrão que pode ser usado para o campo quando um determinado item da lista não tiver nenhum valor no campo.

  • FieldValueType P:Microsoft.SharePoint.SPField.FieldValueType o tipo de valor campo.

  • GetFieldValue   Converts the specified string into a field type value object. Seu personalizado objeto Field deve retornar o personalizado objeto valor do campo quando o M:Microsoft.SharePoint.SPField.GetFieldValue(System.String) método é invocado. Windows SharePoint Services retorna este objeto valor do campo quando o nome SPListItem.this["Field SPListItem.this["field name"] método for chamado. Com freqüência um substituir desse método, após verificar que o String não é vazio ou NULL, tem apenas para chamar o construtor do personalizado classe valor do campo que utiliza um parâmetro seqüência de caracteres (veja acima).

  • GetFieldValueAsText M:Microsoft.SharePoint.SPField.GetFieldValueAsText(System.Object) o valor de dados campo como um seqüência de caracteres.

  • GetFieldValueAsHtml M:Microsoft.SharePoint.SPField.GetFieldValueAsHtml(System.Object) o valor de dados campo como um seqüência de caracteres, formatado como HTML. Esta HTML-formatado valor do campo com mais freqüência é usado para processar o valor do campo diretamente em uma página. Ele é usado, de exemplo, na página histórico de versão de um item da lista. No entanto, este HTML-formatado valor do campo não é usado em forma de exibição. Processamento do campo para a forma de exibição é geralmente o mesmo processamento para modos de exibição lista; Ou seja, ele é processado a partir de elemento Colaboração Application Markup Language (CAML) CAML DisplayPattern DisplayPattern no arquivo fldtype*.xml do o tipo de campo.

  • GetValidatedString este método valida o objeto valor tipo de campo e converte-lo em um serializado seqüência de caracteres. Por sua vez, esse método pode usar o método ToString ToString do objeto valor do campo para converter o objeto valor do campo em um seqüência de caracteres.

  • PreviewValueTyped retorna um valor visualizar do campo dados, para uma exibição tempo de design de controle de campo no modo de exibição e edição.

Consulte também

Tarefas

Walkthrough: Criar um tipo de campo personalizado

Conceitos

Tipos de campo personalizado
Classes do campo personalizado
A validação de dados do campo personalizado