Solved

ASP button not firing event on intial Click.

Posted on 2004-08-04
3
369 Views
Last Modified: 2010-04-06
I have a page that has X amount of ASP buttons on it. These buttons are dynamically generated. I also have 1 statick Button on the page, near the bottom (submit).

I have an issue with the dynamic buttons. The buttons's purpose is to switch items from one list box to another, by traversing through the controls on the page.

When you select the items you want moved, and click a button, the page will postback to itself, but the SENDER will be the page, and not the button.  

The page refreshes.

Now, if you try and use the buttons to switch the items, it works perfectly, as it should.

This will also happen if you use the static submit button... but it submits right away, and the buttons to switch items works after that too.

So... my question is, is there a way for these buttons to call the event on the first click? Is there  a hack around it?
Here is the declaration of my buttons:

                          <asp:button cssclass="BoxType42"  id="btnDisAllow" Text="DisAllow" onclick="SwitchItem" runat="server" />
                        </td><asp:button cssclass="BoxType42"  id="btnAllow" Text="Allow" onclick="SwitchItem"   runat="server" />

0
Comment
Question by:icompass
  • 2
3 Comments
 
LVL 6

Expert Comment

by:viola123
ID: 11722717
i suggest you using a boolean variable to control this process. the code to achieve that could be:

protected bool status = true;

private void Page_load(........)
{
.....................
}

private void SwitchItem()
{
       if (status == true)
       {
            ................
            ................
            ................
            ................// this is your original code
           
            status = false;  // set it as false, so you code won't be processed next time

        }
}
0
 
LVL 6

Expert Comment

by:viola123
ID: 11723331
sorry, i misunderstand you just now. the solutions should be:

1. for your static submit button:
<form id="form1" method="get" action="thispage.aspx?status=1">
        <input type="submit" value="Submit form">
</form>

2. in the code behind of your aspx page,eg. thispage.aspx.cs:
protected string status="0";

private void Page_load(........)
{
     status = Request.Params["status"].ToString();
}

private void SwitchItem()
{
       if (status != "1")
       {
            ................
            ................
            ................
            ................// this is your original code
           
            status = "0";  // set it as 0, so you code won't be processed next time
        }
}
0
 
LVL 1

Accepted Solution

by:
MrBic earned 500 total points
ID: 11727426
Viola123 hit it, but we gota take it a step further.

Seeing your buttons are dynamically created, we need a query string for them, so your code behind knows which itteration of the repeater you're using.

The repeater will name controls like :  RepeaterName__ctl00_IDofControl

so Grab the ctl00 or ctl312 , whatever it may be, and throw that into a QS. Read that in on the page load, and go from there.

You could use JS to change the QS of the form, but .NET has had issues with that in the past with a server side form tag.


Hope this helps!

/Bic
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

Most of the sites are being standardized with W3C Web Standards. W3C provides lot of web standard services to the web. They have the web specification, process and documentation for all the web standards. You can apply HTML, CSS and Accessibility st…
Preface This article introduces an authentication and authorization system for a website.  It is understood by the author and the project contributors that there is no such thing as a "one size fits all" system.  That being said, there is a certa…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
The viewer will the learn the benefit of plain text editors and code an HTML5 based template for use in further tutorials.

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now