Pregunta

Estoy intentando crear un control de servidor personalizado (WebControl) con un cuadro de texto.

Agrego el cuadro de texto asp.net al control personalizado en la anulación CreateChildControls. En la anulación de OnInit agrego un controlador de eventos a TextBox.TextChanged.

Todo funciona, excepto que TextChanged nunca se activa. Miré viewstate y parece que mi cuadro de texto nunca guarda su propiedad Text en el viewstate. He intentado configurar el texto en varios lugares, incluido el constructor, pero nada funciona.

¿Cómo puedo agregar TextBox dinámicamente a WebControl para guardar su texto en viewstate y hacer que se active el evento TextChanged?

Agradecería mucho un ejemplo de código WebControl detrás con TextBox que se agrega dinámicamente y que se dispara el evento TextChanged.

¿Fue útil?

Solución 2

lo arregló. El control dinámico debe crearse y agregarse en el evento Init. Se le debe asignar una ID sin símbolos especiales de ASP.NET ('$' o ':' dentro de la ID personalizada romperá las cosas). Todas las propiedades deben asignarse después de agregar el control al árbol de controles.

aquí hay un ejemplo de trabajo para el código de página detrás:

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 el código de inicio de lugar de WebControl en la anulación de OnInit

Otros consejos

El control creado dinámicamente debe crearse nuevamente en cada publicación posterior (el evento pageInit es la mejor opción) para que se active el evento.

Por cierto, si desea que el evento TextChanged genere una devolución de datos, también debe establecer el AutoPostback del control en verdadero.

Esto lo ayudará. En resumen, debe manejar el estado de vista para su control agregado dinámicamente por su cuenta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top