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;
}
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";
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With