/ / Establecer propiedad de control de usuario web en GridView Selected Row - asp.net, gridview

Establezca la propiedad de control de usuario web en la fila seleccionada de GridView - asp.net, gridview

Tengo un control de usuario web (ascx) que expone unPropiedad "ID". Lo que quiero hacer es establecer esta propiedad cuando el evento SelectedIndexChanged se active en una vista de cuadrícula en la página que lo contiene. Sin embargo, parece que no puedo hacerlo ... Aquí está mi código:

 protected void grdPhysicians_SelectedIndexChanged(object sender, EventArgs e)
{
physicians_certif1.mdID = grdPhysicians.SelectedDataKey.ToString();
mvData.SetActiveView(viewEdit);
panAdditional.Visible = true;
}

Physicians_certif1 es el control del usuario. Parece que el control de usuario se está cargando antes de que el evento SelectedIndexChanged tenga la oportunidad de establecer su propiedad.

¿Alguna idea de gente?

Respuestas

0 para la respuesta № 1

ÁSPID.Los ciclos de vida de la página de red pueden ser difíciles de entender, especialmente con los controles de usuario ascx que también tienen su propio ciclo de vida. Si está configurando la propiedad mdID en Page_Load de la página o del control ASCX o ha codificado un valor predeterminado en el XHTML, es probable que se restablezca después de los incendios de SelectedIndexChanged.

Establezca un punto de interrupción en grdPhysicians_SelectedIndexChanged, establezca un reloj en physicians_certif1.mdID y recorra el código con el depurador.


0 para la respuesta № 2

Sí, eso es exactamente lo que está sucediendo. Debe mirar (y estar familiarizado con) el siguiente recurso:

Ciclo de vida de la página ASP.Net

La página se cargará, luego se cargará el control,entonces tus eventos comenzarán a dispararse. Si tiene necesidades de configuración basadas en desencadenantes de eventos, es mejor colocar esas configuraciones en los eventos Page_LoadComplete o Page_PreRender del control de usuario en cuestión o aplicar las instrucciones "Rebinding" en el método Set de su propiedad:

public MyValue MyProperty()
{
get
{
return _myProperty;
}
set
{
RebindMyControls();
_myProperty = value;
}
}