2011-09-06 51 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");

相关问题