我需要让asp按钮在我点击它时不刷新整个页面。
我的代码只是将图片更改为另一张图片,但图片的索引是在页面加载方法中设置的。每次单击按钮转到下一个图片索引时,整个页面都会刷新并调用页面加载方法。然后将索引设置回0。
当我点击按钮
时,如何让页面停止调用页面加载方法这是我正在使用的基本代码
表中的:
<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>
这是.cs文件
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;
}
答案 0 :(得分:4)
您需要使用UpdatePanel进行部分更新。
<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>
然后在.cs后面的代码中写下这个:
protected void btnImageChange_Click1(object sender, EventArgs e)
{
// you can add a loop here for the list of images...
Image1.ImageUrl = "~/Images/loading.gif";
}
答案 1 :(得分:-1)
onClientClick="return false"
应该这样做! Onclick将引用一个ASP.net函数,onClientClick将在HTML中的控件上呈现为OnClick。
答案 2 :(得分:-2)
按钮点击调用此javascript函数
<script type="text/Javascript">
function ChangeIndex(){
$.ajax({
url: "Url of your page/Methodname",
data: JSON.stringify({variableName,VariableValue}),
dataType: 'json',
type: 'POST',
contentType: 'application/json',
success: function (data) {
//set your image scr here
},
error: function (data, status, jqXHR) {
//alert('There was an error.');
}
}
</script>
在您的代码中写一个webmethod
[WebMethod]
public static string Methodname(string variableName)
{
//Logic to get the index.
return "Index";
}
希望这会有所帮助。请发布您的代码,以便我们可以帮助您。
答案 3 :(得分:-2)
尽量不要实现这样的旧时尚按钮。相反,您可以使用不会回发的fly buttons
或jQuery
触发按钮。