2010-02-02 102 views
1

我有一個公開「ID」屬性的Web用戶控件(ascx)。我想要做的是在SelectedIndexChanged事件在包含頁面的gridview中觸發時設置此屬性。然而,我似乎無法這樣做....這是我的代碼:將Web用戶控件屬性設置爲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

ASP.Net頁面生命週期可能很難理解,尤其是對於也有自己的生命週期的ascx用戶控件。如果您在頁面或ASCX控件的Page_Load中設置mdID屬性,或者在XHTML中將默認值硬編碼到它中,則它可能在SelectedIndexChanged觸發後重置。

在grdPhysicians_SelectedIndexChanged中設置一個斷點,在physicians_certif1.mdID上設置一個監視並使用調試器遍歷代碼。

0

是的,這正是發生的情況。你應該看看(並熟悉)以下資源:

ASP.Net Page Life Cycle

該頁面將加載,那麼控制將加載,那麼你的事件將開始射擊。如果您有基於事件觸發器的配置需求,最好將這些配置放置在相關用戶控件的Page_LoadComplete或Page_PreRender事件中,或者在屬性的Set方法中應用「重新綁定」指令:

public MyValue MyProperty() 
{ 
    get 
    { 
    return _myProperty; 
    } 
    set 
    { 
    RebindMyControls(); 
    _myProperty = value; 
    } 
} 
相關問題