get submit button id

2020-04-10 03:59发布

问题:

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?

回答1:

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



回答2:

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:

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
}


回答4:

You could try:

if (this.Page.Request.Form[this.btnSave.ClientID.Replace("_", "$")] != null) {

}


回答5:

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



回答6:

Request.Form["__EVENTTARGET"] will give you the button that fired the postback



回答7:

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.



标签: c# .net asp.net