2015-11-06 81 views
-1

我有一個包含數據過濾器和報告的網頁。數據過濾器是一個用戶控件。報告加載在主頁面內,所以我有兩頁。一個用戶控件和一個網頁。 現在我要通過單擊用戶控件中的按鈕來收集數據,然後我可以使用它來過濾表格,但似乎在回發過程中首先進入main的Page_Load方法,而不是用戶控件因此該報表是在過濾之前構建的.BtnPreviewReport_Click必須早於page_Load執行。 我該怎麼辦?管理和控制回發優先

用戶控制

protected void BtnPreviewReport_Click(object sender, EventArgs e) 
     { 
      Date = Year.Text + "/" + Month.Text + "/" + Day.Text;   

     } 

主頁

protected void Page_Load(object sender, EventArgs e) 
     { 

       string date = UserControls1.Date; 
       Response.Write(date); 
     } 

輸出:沒有

+0

你熟悉如何事件在網頁中被解僱..?還要在頁面加載事件中創建一個'Pre_Init'方法做一些if(IsPostBack){} else {}'結構..你可能還想聲明'Date'變量是靜態的..你能編輯你的問題並顯示用戶控件類和'Date'的數據類型很難根據你發佈的內容來告訴你是什麼或者不在做什麼,因爲你無法確定何時以及如何初始化用戶控件。 – MethodMan

回答

0

我不知道爲什麼ButtonClick事件應早於頁面加載運行。 但在這裏爲您解決問題,一個簡單的辦法:

private bool isPageLoaded = false; 
private bool isButtonClicked = false; 


private void ButtonClick() 
{ 
    isButtonClicked = true; 
    doTheFirstThing(); 
    if(isPageLoaded) 
    { 
     doTheSecondThing(); 
    } 
} 

private void PageLoad() 
{ 
    isPageLoaded = true; 
    if(isButtonClicked) 
    { 
     doTheSecondThing(); 
    } 
    // else let the button click handle the SecondThing() 
}