Solved

ASP button not firing event on intial Click.

Posted on 2004-08-04
3
374 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Simple PHP - search by location postcode/zip code 8 31
File names with & character 6 69
WCAG audit tools 1 72
Randomize in Owl Carousel v1.3.2 6 16
What is Node.js? Node.js is a server side scripting language much like PHP or ASP but is used to implement the complete package of HTTP webserver and application framework. The difference is that Node.js’s execution engine is asynchronous and event…
Browsers only know CSS so your awesome SASS code needs to be translated into normal CSS. Here I'll try to explain what you should aim for in order to take full advantage of SASS.
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
The viewer will learn how to dynamically set the form action using jQuery.

943 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

9 Experts available now in Live!

Get 1:1 Help Now