将Web用户控件属性设置为GridView Selected Row

时间:2010-02-02 17:55:08

标签: asp.net gridview

我有一个公开“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事件有机会设置它的属性之前,用户控件似乎正在加载。

任何想法的人?

2 个答案:

答案 0 :(得分:0)

ASP.Net页面生命周期很难理解,尤其是ascx用户控件也有自己的生命周期。如果要在页面或ASCX控件的Page_Load中设置mdID属性,或者在XHTML中将默认值硬编码到其中,则可能会在SelectedIndexChanged触发后重置。

在grdPhysicians_SelectedIndexChanged中设置断点,在physicians_certif1.mdID上设置监视并使用调试器逐步执行代码。

答案 1 :(得分:0)

是的,这正是发生的事情。您应该查看(并熟悉)以下资源:

ASP.Net Page Life Cycle

页面将加载,然后控件将加载,然后您的事件将开始触发。如果您有基于事件触发器的配置需求,最好将这些配置放在相关用户控件的Page_LoadComplete或Page_PreRender事件中,或者在您的属性的Set方法中应用“重新绑定”说明:

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