我有一个公开“ID”属性的Web用户控件(ascx)。我想要做的是在SelectedIndexChanged事件在包含页面的gridview中触发时设置此属性。但是,我似乎无法做到....这是我的代码:
protected void grdPhysicians_SelectedIndexChanged(object sender, EventArgs e)
{
physicians_certif1.mdID = grdPhysicians.SelectedDataKey.ToString();
mvData.SetActiveView(viewEdit);
panAdditional.Visible = true;
}
Physicians_certif1是用户控件。在SelectedIndexChanged事件有机会设置它的属性之前,用户控件似乎正在加载。
任何想法的人?
答案 0 :(得分:0)
ASP.Net页面生命周期很难理解,尤其是ascx用户控件也有自己的生命周期。如果要在页面或ASCX控件的Page_Load中设置mdID属性,或者在XHTML中将默认值硬编码到其中,则可能会在SelectedIndexChanged触发后重置。
在grdPhysicians_SelectedIndexChanged中设置断点,在physicians_certif1.mdID上设置监视并使用调试器逐步执行代码。
答案 1 :(得分:0)
是的,这正是发生的事情。您应该查看(并熟悉)以下资源:
页面将加载,然后控件将加载,然后您的事件将开始触发。如果您有基于事件触发器的配置需求,最好将这些配置放在相关用户控件的Page_LoadComplete或Page_PreRender事件中,或者在您的属性的Set方法中应用“重新绑定”说明:
public MyValue MyProperty()
{
get
{
return _myProperty;
}
set
{
RebindMyControls();
_myProperty = value;
}
}