Способ узнать, какая кнопка была нажата - PullRequest
2 голосов
/ 20 июня 2011

Я хочу выяснить, какая кнопка была нажата во время обратной записи.

Так что, если пользователь нажимает кнопку .. Он переходит к обратной передаче, а затем к элементам управления Событие Click.

ЧтоЯ хочу выяснить, какая кнопка была нажата на первом этапе.На этапе PostBack.

Есть ли способ достичь этого?

пс.только код c #Это вопрос asp.net

Ответы [ 2 ]

6 голосов
/ 20 июня 2011

Вы можете проверить __EVENTTARGET и коллекцию Form с кодом, подобным этому (бесстыдно украденным у здесь ).

public static System.Web.UI.Control GetPostBackControl(System.Web.UI.Page page)
{
    Control control = null;
    string ctrlname = page.Request.Params["__EVENTTARGET"];
    if (ctrlname != null && ctrlname != String.Empty)
    {
        control = page.FindControl(ctrlname);
    }
    // if __EVENTTARGET is null, the control is a button type and we need to 
    // iterate over the form collection to find it
    else
    {
        string ctrlStr = String.Empty;
        Control c = null;
        foreach (string ctl in page.Request.Form)
        {
            // handle ImageButton controls ...
            if (ctl.EndsWith(".x") || ctl.EndsWith(".y"))
            {
                ctrlStr = ctl.Substring(0, ctl.Length - 2);
                c = page.FindControl(ctrlStr);
            }
            else
            {
                c = page.FindControl(ctl);
            }
            if (c is System.Web.UI.WebControls.Button ||
                        c is System.Web.UI.WebControls.ImageButton)
            {
                control = c;
                break;
            }
        }
    }
    return control;
}

Назовите это Page_Load так:

Control controlThatCausedPostBack = GetPostBackControl(this);
0 голосов
/ 20 июня 2011

Просто используйте приватную переменную на своей веб-странице.В обработчике OnClick установите значение этой переменной равным аргументу sender (вам нужно будет привести его к типу Button или Control).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...