Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

stop refreshing page on button click

Tags:

html

c#

asp.net

I need to make the asp button to not refresh the whole page when I click it.

my code is just to make a picture change to another picture but the index of the picture is set in the page load method. And every time you click the button to go to the next picture index, the whole page refreshes and calls the page load method. That then sets the index back to 0.

how can I make the page stop calling the page load method when I click a button

Here's the basic code I'm using

in a table:

<tr>
    <td> <asp:Button ID="Button1" runat="server" Text="Prev" OnClick="Button1_Click" OnClientClick="return false"/> </td>
    <td> <img ID="pic" alt="" src="010.JPG" runat="server" width="200" height="200" /> </td>
    <td> <asp:Button ID="Button2" runat="server" Text="Next" OnClick="Button2_Click" OnClientClick="return false"/> </td>
</tr>

and this is the .cs file

private List<String> imagePathList = new List<String> { };
private List<Boolean> isActivePath = new List<Boolean> { };

protected void Page_Load(object sender, EventArgs e)
{
        Debug.WriteLine("GALLARY *page load*");

        pic.Width = 200;
        pic.Height = 200;

        addToList();

        getImagePath(1);
}
protected void Button1_Click(object sender, EventArgs e)
{
    Debug.WriteLine("GALLARY *Button1_Click*");
    int index = getActive();
    getImagePath(index = index - 1); 
}
protected void Button2_Click(object sender, EventArgs e)
{
    Debug.WriteLine("GALLARY *Button2_Click*");
    int index = getActive();
    getImagePath(index = index + 1);
}

private void getImagePath(int index)
{
    Debug.WriteLine("GALLARY *getImagePath* index = "+index);
    int length = imagePathList.Count;

    if (index < length && index >= 0)
    {
        //pic.Src = imagePathList[index];
        //pic.Alt = imagePathList[index];
        pic.Src = imagePathList[index];
        pic.Alt = imagePathList[index];
        setActive(index);
    }
    else
    {
        pic.Src = "DOES NOT EXIST";
        pic.Alt = "DOES NOT EXIST";
    }
}

private void addToList()
{
    Debug.WriteLine("GALLARY *addToList*");
    imagePathList.Clear();
    isActivePath.Clear();

    addImage("08.JPG");
    addImage("09.JPG");
    addImage("010.JPG");
    addImage("011.JPG");
    addImage("012.JPG");
}

private void addImage(String filename)
{
    Debug.WriteLine("GALLARY *addImage* filename = "+filename);
    imagePathList.Add(filename);
    isActivePath.Add(false);
}
private void setActive(int index)
{
    Debug.WriteLine("GALLARY *setActive* index = " + index);
    for (int i = 0; i > isActivePath.Count; i++)
    {
        isActivePath[i] = false;
    }

    isActivePath[index] = true;
}
private int getActive()
{
    Debug.Write("GALLARY *getActive*");
    int temp = 0;
    for (int i = 0; i > isActivePath.Count; i++)
    {
        if (isActivePath[i] == true)
        {
            temp = i;
        }
    }
    Debug.WriteLine("index = " + temp);
    return temp;
}
like image 927
Julie20 Avatar asked Apr 06 '26 11:04

Julie20


1 Answers

You need to use UpdatePanel for Partial Updates.

<asp:ScriptManager runat="server"></asp:ScriptManager>

    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Always" >
    <ContentTemplate>
    <asp:Image ID="Image1" runat="server" Height="23px"  Width="24px" />

    <asp:Button ID="btnImageChange" runat="server" Text="Check" OnClick="btnImageChange_Click1"  />
     </ContentTemplate>
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="btnImageChange" EventName="Click" />
    </Triggers>
    </asp:UpdatePanel>

Then in code behind .cs write this:

protected void btnImageChange_Click1(object sender, EventArgs e)
    {
     // you can add a loop here for the list of images...
            Image1.ImageUrl = "~/Images/loading.gif";

}
like image 81
reaz Avatar answered Apr 08 '26 23:04

reaz



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!