簡體   English   中英

識別導致回發的控件

[英]Identifying control that caused postback

我有一個頁面,在下拉列表選擇上回發(使用AJAX更新面板)。 根據下拉選擇,頁面上的其余UI將動態生成。 在頁面加載時繪制動態UI,以便在“ Submit按鈕單擊時獲取值。 我面臨的問題是,在下拉列表更改時,似乎會發生兩個回發,一個繪制原始UI,另一個繪制更改的UI(從而產生不一致)。 如何處理這個問題。 有沒有辦法找出哪個控件導致回發,以便我可以重新繪制UI,因為選擇更改/提交按鈕單擊發生回發。

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

你可以檢查回發然后做..

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

編輯:您可以通過以下方式獲得實際控制權。

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

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

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.
}

檢查下拉框是否具有AutoPostBack =“true”,因為即使沒有單擊提交按鈕,這也會導致下拉回發,因此如果單擊提交按鈕,它將回發兩次。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM