标识导致回发的控件
本文关键字:控件 标识 | 更新日期: 2023-09-27 18:07:35
我有一个页面,它对下拉列表选择进行回发(使用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");