Arsen Mkrtchyan
Arsen Mkrtchyan

Reputation: 50712

get submit button id

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?

Upvotes: 3

Views: 15210

Answers (7)

Saad Alothman
Saad Alothman

Reputation: 363

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

Upvotes: 0

Jidheesh Rajan
Jidheesh Rajan

Reputation: 4845

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

Upvotes: 0

patrick
patrick

Reputation: 21

You could try:

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

}

Upvotes: 0

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
}

Upvotes: 0

AndreyAkinshin
AndreyAkinshin

Reputation: 19021

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

Upvotes: 1

Tor Haugen
Tor Haugen

Reputation: 19627

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

Upvotes: 8

Canavar
Canavar

Reputation: 48088

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.

Upvotes: -2

Related Questions