Pergunta

Eu estou tentando criar um controle de servidor personalizado (WebControl) com uma caixa de texto.

eu adicionar caixa de texto asp.net para o controle personalizado no CreateChildControls override. Em OnInit substituir eu adicionar manipulador de eventos para TextBox.TextChanged.

Tudo funciona, exceto que TextChanged nunca dispara. Olhei para viewstate e parece que minha caixa de texto não salva sua propriedade Text no viewstate. Tentei texto conjunto em vários lugares, incluindo construtor, mas nada funciona.

Como posso obter TextBox adicionados dinamicamente para WebControl para salvá-lo do texto no viewstate e obter evento TextChanged de fogo?

Eu gostaria muito de receber um exemplo de código de WebControl trás com TextBox sendo adicionados dinamicamente e estar evento TextChanged disparado.

Foi útil?

Solução 2

fixa-lo. controle dinâmico deve ser criado e adicionado no evento Init. Deve ser atribuído um ID sem símbolos ASP.NET especiais ( '$' ou ':' dentro ID personalizado irá quebrar as coisas). Todas as propriedades devem ser atribuídos após o controle é adicionado à árvore de controlo.

aqui está um exemplo de trabalho para a página CodeBehind:

private readonly TextBox _textBoxTest = new TextBox();

protected void Page_Init( object sender, EventArgs e )
{
    this.form1.Controls.Add( _textBoxTest ); 
    _textBoxTest.Text = "TestBoxTest";
    _textBoxTest.ID = "TestBoxTestId";
    _textBoxTest.TextChanged += this._textBoxTest_TextChanged;
}

void _textBoxTest_TextChanged( object sender, EventArgs e )
{
    _textBoxTest.Text = "Worked";
}

para WebControl código de inicialização lugar no OnInit override

Outras dicas

O controle criado dinamicamente deve ser criado de novo em cada posto de volta, (o evento pageInit é a melhor opção) para o evento a ser acionado.

BTW, se você deseja que o evento TextChanged para gerar uma nova postagem que você também deve definir o AutoPostback do controle para true.

Este vai ajudá-lo. Em suma, você precisa lidar com o estado de visualização para o seu dinamicamente adicionado o controle sobre o seu próprio.

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