【问题标题】:Getting control that fired postback in page_init获取在 page_init 中触发回发的控制
【发布时间】:2010-03-19 17:09:04
【问题描述】:

我有一个包含动态创建的下拉列表的网格视图。当更改下拉值并在网格上进行大规模更新 (btnUpdate.click) 时,我必须在页面初始化中创建控件,以便它们可用于视图状态。但是,我还有几个其他按钮也会导致回发,我不想在页面 init 中创建控件,而是在按钮单击事件的后面创建。

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

【问题讨论】:

    标签: asp.net postback


    【解决方案1】:

    可以通过查看Request.Form["__EVENTTARGET"] 来确定是哪个控件导致了回发。这样做的问题是,除非您将其 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>
    

    【讨论】:

    • 你应该使用 UniqueID 来匹配 Request.Form["__EVENTTARGET"].ToString() 的值,仅控件的ID是不够的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    相关资源
    最近更新 更多