代码之家  ›  专栏  ›  技术社区  ›  Arsen Mkrtchyan

获取提交按钮id

  •  2
  • Arsen Mkrtchyan  · 技术社区  · 16 年前

    在asp.net表单中,我有几个动态生成的按钮,所有这些按钮都是提交表单的,有没有办法在页面加载事件中获取提交表单的按钮?

    7 回复  |  直到 13 年前
        1
  •  8
  •   Tor Haugen    16 年前

    这个 sender 处理程序的参数包含对引发事件的控件的引用。

    private void MyClickEventHandler(object sender, EventArgs e)
    {
        Button theButton = (Button)sender;
        ...
    }
    

    编辑: 等等,在加载事件中?那是个小骗子。我能想到的一件事是:请求的表单集合将包含提交按钮的键/值,但不包含其他按钮的键/值。因此,您可以执行以下操作:

    protected void Page_Load(object sender, EventArgs e)
    {
        Button theButton = null;
        if (Request.Form.AllKeys.Contains("button1"))
            theButton = button1;
        else if (Request.Form.AllKeys.Contains("button2"))
            theButton = button2;
        ...
    }
    

        2
  •  1
  •   AndreyAkinshin    16 年前
    protected void Page_Load(object sender, EventArgs e) {            
        string id = "";
        foreach (string key in Request.Params.AllKeys) {
            if (!String.IsNullOrEmpty(Request.Params[key]) && Request.Params[key].Equals("Click"))
                id = key;
        }
        if (!String.IsNullOrEmpty(id)) {
            Control myControl = FindControl(id);
            // Some code with myControl
        }
    }
    
        3
  •  0
  •   Wagner Danda da Silva Filho    15 年前

    如果您的代码位于用户控件内,则此操作无效:

    Request.Form.AllKeys.Contains("btnSave") ...
    

    相反,您可以尝试以下方法:

    if (Request.Form.AllKeys.Where(p => p.Contains("btnSave")).Count() > 0)
    {
        // btnSave was clicked, your logic here
    }
    
        4
  •  0
  •   patrick    14 年前

    你可以试试:

    if (this.Page.Request.Form[this.btnSave.ClientID.Replace("_", "$")] != null) {
    
    }
    
        5
  •  0
  •   Jidheesh Rajan    13 年前

    请在页面加载事件中尝试此代码

    string eventtriggeredCategory = Request.Form["ctl00$ContentPlaceHolder1$ddlCategory"];
    

    如果eventtriggeredCategory返回其触发的任何值,则DDLCogory事件

    这对我来说很好

    谢谢 吉杜

        6
  •  0
  •   Arsen Mkrtchyan    12 年前

    Request.Form["__EVENTTARGET"]

        7
  •  -2
  •   Canavar    16 年前

    使用 CommandArgument 属性来确定哪个按钮提交表单。

    我刚刚意识到,你说你需要在PageLoad上使用它,这只适用于点击服务器端事件,不适用于PageLoad。

    推荐文章