get submit button id

后端 未结 7 712
抹茶落季
抹茶落季 2021-01-21 02:57

Inside asp.net form I have few dynamically generated buttons, all of this buttons submit a form, is there a way to get which button was submit the form in page load event?

相关标签:
7条回答
  • 2021-01-21 03:28

    You could try:

    if (this.Page.Request.Form[this.btnSave.ClientID.Replace("_", "$")] != null) {
    
    }
    
    0 讨论(0)
  • 2021-01-21 03:28

    please try this code in page load event

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

    if eventtriggeredCategory is returning any value its fired the event of ddlCategory

    this is works fine for me

    Thanks Jidhu

    0 讨论(0)
  • 2021-01-21 03:32

    This won't work if your code is inside a user control:

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

    Instead you can try this:

    if (Request.Form.AllKeys.Where(p => p.Contains("btnSave")).Count() > 0)
    {
        // btnSave was clicked, your logic here
    }
    
    0 讨论(0)
  • 2021-01-21 03:41

    The sender argument to the handler contains a reference to the control which raised the event.

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

    Edit: Wait, in the Load event? That's a little tricker. One thing I can think of is this: The Request's Form collection will contain a key/value for the submitting button, but not for the others. So you can do something like:

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

    Not very elegant, but you get the idea..

    0 讨论(0)
  • 2021-01-21 03:44

    Use CommandArgument property to determine which button submits the form.

    Edit : I just realized, you said you need this at PageLoad, this works only for Click server side event, not for PageLoad.

    0 讨论(0)
  • 2021-01-21 03:54
    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
        }
    }
    
    0 讨论(0)
提交回复
热议问题