2013-02-06 51 views
1

我在頁面上有一個用戶控件。用戶控件有一個公共屬性,我需要在點擊按鈕後設置。你怎麼做到這一點? 看起來控件是在按鈕點擊事件觸發之前呈現的,所以設置屬性不起作用。按鈕點擊設置用戶控件的公共屬性

頁: <%@註冊SRC = 「Email.ascx」 變量名= 「電子郵件」 的TagPrefix = 「UC2」 %>

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
     EmailList.IsEditable = false; 
} 

protected void btn_Click(object sender, EventArgs e) 
{ 
    EmailList.IsEditable = true; 
} 

用戶控制: 公共BOOL IsEditable {獲得;組; }

當我在頁面加載事件中設置它時,公共屬性被正確設置,但不是在按鈕單擊上。 該按鈕用於將表單從只讀模式更改爲編輯模式。有沒有辦法在按鈕點擊事件中設置公共屬性?如果是這樣,怎麼樣?

+0

IsEditable在「set」實現中做了什麼? – Sunny

回答

1

該屬性設置得很好。問題是在你的用戶控件中,你把它的控件設置爲只讀/啓用。

如果您希望能夠影響usercontrol的呈現方式,您必須在usercontrol的Page_PreRender事件中執行設置子控件的只讀/啓用屬性的邏輯。此事件在buttonclick事件之後執行。

必須閱讀msdn:the page lifecycle。您會注意到控制事件在Page_Load之後和Page_LoadComplete之前得到處理。

+0

感謝您的快速評論。這對我很好。我只是在按鈕單擊事件中設置一個變量,並在PagePreRender方法中使用它,一切正常! –

+0

@JimShaffer很高興它適合你:)。請務必閱讀頁面生命週期,這對於您初次接觸ASP.net時非常有用 – Destrictor