ASP.NET : Check for click event in page_load

In c#, how can I check to see if a link button has been clicked in the page load method?

I need to know if it was clicked before the click event is fired.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

if( IsPostBack ) 
{
    // get the target of the post-back, will be the name of the control
    // that issued the post-back
    string eTarget = Request.Params["__EVENTTARGET"].ToString();
}

Method 2

if that doesn’t work.Try UseSubmitBehavior="false"

Method 3

The UniqueID of the button will be in Request.Form[“__EVENTTARGET”]

Method 4

Check the value of the request parameter __EVENTTARGET to see if it is the id of the link button in question.

Method 5

Based on accepted answer and the answer of RealSteel this could be a more complete answer.

First add to the .aspx a button like this:

<asp:Button id="btnExport" runat="server" Text="Export" UseSubmitBehavior="false"/>

Then on the Page_Load method:

if(IsPostBack){
   var eventTarget = Request.Params["__EVENTTARGET"]
   // Then check for the id but keep in mind that the name could be 
   // something like ctl00$ContainerName$btnExport 
   // if the button was clicked or null so take precautions against null
   // ... so it could be something like this
   var buttonClicked = eventTarget.Substring(eventTarget.LastIndexOf("$") + 1).Equals("btnExport")

}

Method 6

I just got the same trouble, have to do some logic judgement in the Page_Load method to treat different event(which button was clicked).

I realize the arm to get the as the following example.

The front end aspx source code(I have many Buttons with IDs F2, F3, F6, F12.

   <Button Style="display: none" ID="F2" runat="server" Text="F2:Cancel" OnClientClick="SeiGyo(this)" OnClick="F2_Click" />
    <Button Style="display: none" ID="F3" runat="server" Text="F3:Return" OnClientClick="SeiGyo(this)" OnClick="F3_Click" />
    <Button Style="display: none" ID="F6" runat="server" Text="F6:Run" OnClientClick="SeiGyo(this)" OnClick="F6_Click" />
    <Button Style="display: none" ID="F12" runat="server" Text="F12:Finish" OnClientClick="SeiGyo(this)" OnClick="F12_Click" />

The back end aspx.cs source code, what I need to do is judge which button was clicked when Page_Load was triggered. It seems a little stupid, but works. I hope that will be helpful to some others

Dictionary<string, string> dic = new Dictionary<string, string>();
foreach(var id in new string[]{"F2","F3","F6","F12"})
{
       foreach (var key in Request.Params.AllKeys)
                    {
                        if (key != null && key.ToString().Contains(id))
                            dic.Add(id, Request[key.ToString()].ToString()); 
                    }
}


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x