Получение контроля над отправкой постбэка в page_init - PullRequest
4 голосов
/ 19 марта 2010

У меня есть сетка, которая включает в себя динамически создаваемый выпадающий список. При изменении выпадающих значений и массовом обновлении сетки (btnUpdate.click) мне нужно создать элементы управления в init страницы, чтобы они были доступны для состояния просмотра. Однако у меня есть несколько других кнопок, которые также вызывают обратную передачу, и я не хочу создавать элементы управления в инициализации страницы, а позже в событиях нажатия кнопки.

Как узнать, какой элемент управления запустил обратную передачу, находясь в page_init? __EVENTTARGET = "" и request.params ("btnUpdate") - это ничто

1 Ответ

7 голосов
/ 19 марта 2010

Можно определить, какой элемент управления вызвал PostBack, просмотрев Request.Form["__EVENTTARGET"].Проблема заключается в том, что идентификаторы кнопок не будут отображаться, пока вы не установите для UseSubmitBehavior значение false .Вот пример:

.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>
...