2011-09-06 52 views
4

我有一個頁面回發下拉列表選擇(使用AJAX更新面板)。根據下拉選擇,頁面上的其餘UI將動態生成。在頁面加載時繪製動態UI以獲取Submit按鈕單擊值。我面臨的問題是,在下拉更改時,兩個回發似乎會發生,一個會繪製原始UI,另一個繪製已更改的UI(因此會產生不一致)。如何處理這一點。有什麼方法可以找出哪個控件導致了回發,所以當由於選擇更改/提交按鈕單擊發生回發時,我可以重新繪製UI。識別導致回發的控件

編輯:錯過了重要的問題。更新面板的觸發器是SelectionChanged下拉列表的事件。這會導致額外的回發。

回答

13

您可以檢查回傳,然後做..

if (IsPostBack) 
{ 
    var targetID = Request.Form["__EVENTTARGET"]; 
} 

編輯:您可以通過執行獲得實際控制..

if (targetID != null && targetID != string.Empty) 
{ 
    var targetControl = this.Page.FindControl(targetID); 
} 
1

使用你的控制單獨的服務器事件處理程序。例如:

public void DropDown_Changed(Object sender, EventArgs e) 
{ 
    // Drop down is changed. It's the source of post back. 
} 

public void Button_Click(Object sender, EventArgs e) 
{ 
    // Button is the source of postback. 
} 
1

檢查是否有dropdownbox =的AutoPostBack「真」,因爲這將導致下拉列表回發,即使沒有提交按鈕的點擊,所以如果你點擊提交按鈕,它會回傳兩次。

找到引起回發的控件的方法之一是檢查Request.Params.Get("__EVENTTARGET");

相關問題