2013-10-17 19 views
1

我有一個WebForms頁面,其上有幾個.ascx UserControl的實例。這些控件位於選項卡視圖的某些選項卡上(asp:MultiView)。因此,如果有的話,只有其中一個控件可見。如何知道第一次呈現WebForms控件?

這些控件顯示來自遠程服務的當前數據。 我想只從遠程服務獲取數據一次,在第一次顯示每個控件時(或者用戶點擊一個明確的刷新按鈕)。控制只是使用EnableViewState = true來保存數據。

我現在有

protected override void OnPreRender(EventArgs e) { 
    base.OnPreRender(e); 
    Refresh(); //call the web service 
    } 
} 

但這調用Web服務時表示,每次。

在頁面上,我們有!Page.IsPostBack技巧,但是這當然不適用於控件,特別是在以後才顯示。

但是,如何獲取數據「第一次顯示」只?

注意:我知道我可以將它存儲在ViewState上,但是沒有辦法使用現有的方法/數據嗎?

+1

您是否在尋找[UserControl.IsPostBack](http://msdn.microsoft.com/en-us/library/system.web.ui.usercontrol.ispostback.aspx ) –

+0

不幸的是,這似乎只是該頁面的「IsPostBack」的副本,因爲它在第一次顯示控件後不會改變(如果它在初始頁面加載時未顯示) – Marcel

+1

如果您認爲您的問題可以看作是緩存問題,也許這可以是一些幫助http://msdn.microsoft.com/en-us/library/h30h475z%28v=vs.90%29.aspx – jbl

回答

-1

嘗試布爾

bool isLoaded = false; 

Page_Load() 
{ 
    if(!isLoaded) 
    { 
     // Actual process here like data fill and etc. . . . 
     isLoaded = true; 
    } 
} 
+0

雖然這將工作,但不幸的是我覺得這有點像我在筆記中提到的。 – Marcel

相關問題