ASP.NET::在页面加载期间,如何获取提交回发的控件的ID?
在页面加载期间,我想捕获执行回发的控件ASP.NET::在页面加载期间,如何获取提交回发的控件的ID?,asp.net,postback,Asp.net,Postback,在页面加载期间,我想捕获执行回发的控件 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { } // Capture the control ID here. } 和往常一样,任何想法都将不胜感激 如果有办法的话,我也想知道 但是,您可以为每个可以生成回发的控件设置事件处理程序,并在事件进入时处理它们 问题是这些事件是在页面加载后处理的。因此,在这种方法
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
}
// Capture the control ID here.
}
和往常一样,任何想法都将不胜感激 如果有办法的话,我也想知道 但是,您可以为每个可以生成回发的控件设置事件处理程序,并在事件进入时处理它们
问题是这些事件是在页面加载后处理的。因此,在这种方法中需要做的是为Page_PreRender添加一个处理程序,并在那里处理控件输入。在页面生命周期中,控件事件在加载之后,但在预呈现之前。您通常可以查看
Request.Params[“\u EVENTTARGET”]
。此变量将作为回发的结果填充,并将保存导致它的控件的唯一ID
不幸的是,这不适用于按钮或imagebutton控件。对于在这些情况下获取它的非常健壮的方法,您可以。您可以使用Request[“\uu EVENTTARGET”]获取调用回发的控件的ID。对于可能对此感兴趣的任何人(至少是对我有用的)。提供了答案
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
}
// Capture the control ID here.
}
在页面加载事件中添加:
Control c= GetPostBackControl(this.Page);
if(c != null)
{
if (c.Id == "btnSearch")
{
SetFocus(txtSearch);
}
}
然后在基本页代码中添加:
public static Control GetPostBackControl(Page page)
{
Control control = null;
string ctrlname = page.Request.Params.Get("__EVENTTARGET");
if (ctrlname != null && ctrlname != String.Empty)
{
control = page.FindControl(ctrlname);
}
else
{
foreach (string ctl in page.Request.Form)
{
Control c = page.FindControl(ctl);
if (c is System.Web.UI.WebControls.Button)
{
control = c;
break;
}
}
}
return control;
}
你可以看到原来的帖子
希望这能有所帮助。如果有两个相同形式的按钮。。。你的代码能找到是哪一个引起的吗。。。如果是,你能解释一下怎么做吗?是的。控件名是从page.Request.Params.Get(“\uu EVENTTARGET”)@TheKing读取的,我认为Andy的回答不正确。要回答您的问题,根据,代码将找到正确的按钮。根据本文的解释如下:按钮呈现为简单输入type=“submit”标记。按钮所做的只是使表单提交。就这样。但是,您仍然可以通过另一种方式访问它。由于按钮(或输入)是表单提交的原因,因此它将与提交表单中的所有其他值一起添加到表单集合中的项目中。需要注意的是,表单上的其他输入type=“submit”标记不会添加到表单集合中,除非它是导致表单提交的标记。如果要在表单集合中查找任何按钮,那么这就是导致回发的原因(假设是按钮导致页面提交)