获得在page_init中触发回发的控件

时间:2010-03-19 17:09:04

标签: asp.net postback

我有一个包含动态创建的下拉列表的gridview。当更改下拉值并在网格上进行批量更新(btnUpdate.click)时,我必须在页面init中创建控件,以便它们可供viewstate使用。但是,我还有其他几个按钮也会导致回发,我不想在页面init中创建控件,而是在按钮点击事件中创建控件。

如何判断哪个控件在page_init中触发了回发? __EVENTTARGET =“”和request.params(“btnUpdate”)什么都不是

1 个答案:

答案 0 :(得分:7)

通过查看Request.Form["__EVENTTARGET"],可以确定哪个控件导致了PostBack。这样做的问题是,除非您将UseSubmitBehavior设置为 false ,否则不会显示按钮ID。这是一个例子:

<强> .aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        switch (Request.Form["__EVENTTARGET"].ToString())
        {
            case "ddlOne":
                break;
            case "btnOne":
                break;
            case "btnTwo":
                break;
        }
    }
}

<强>的.aspx

<form id="form1" runat="server">
  <asp:DropDownList ID="ddlOne" AutoPostBack="true" runat="server">
      <asp:ListItem Text="One" Value="One" />
      <asp:ListItem Text="Two" Value="Two" />
  </asp:DropDownList>  
  <asp:Button ID="btnOne" Text="One" UseSubmitBehavior="false" runat="server" />
  <asp:Button ID="btnTwo" Text="Two" UseSubmitBehavior="false" runat="server" />
</form>