Pergunta

A configuração:. Formulário Web com lotes de controles de caixa de texto

Quando eu definir qualquer um dos propriedade Enabled do controle TextBox como False, eu gostaria de "troca" que TextBox para uma etiqueta em tempo de execução. A idéia aqui é se ele é somente leitura de qualquer maneira, não exibi-lo em um controle projetado para edição.

Eu estou pensando que este deve ser bastante simples e reutilizável, mas qual é a melhor maneira de fazer isso?

Foi útil?

Solução

Não tenho certeza que é o melhor caminho, eu faria um controle de servidor personalizado é uma caixa de texto,

, em seguida, substituir o método render, verificar se ele é somente leitura,

Se ele é lido só então tornar suas tags span como um controles de rótulo faz.

Se não, então deixe que a base (caixa de texto) prestar assumir ...

public class SpecialTextbox : TextBox
{
    public override void RenderControl(HtmlTextWriter writer)
    {
        if (!this.ReadOnly)
        {
            base.RenderControl(writer);
        }
        else
        {
            writer.Write(string.Format("<span id=\"{0}\" class=\"{1}\">{2}</span>", 
                            this.ClientID, 
                            this.CssClass, 
                            this.Text));
        }
    }
}

Outras dicas

Uma possível solução seria a criação de um novo controle estendendo TextBox. Seu controle especializado, então, substituir (de partes) do código de processamento, fazendo com que o controle para processar semelhante a um rótulo quando ReadOnly = true.

Outra forma seria a de olhar para usar um adaptador de controle. Você seria, essencialmente, ser capaz de fazer exatamente a mesma coisa que BigBlondeViking reccomends, mas você poderia coninue usar um regular asp: controle caixa de texto em seu código. Isso será muito mais fácil em você e outros desenvolvedores.

Sobre o controle adaptadores

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top