我是ASP.NET的新手,所以我的问题可能有点愚蠢。我们假设我们有一个带有两个按钮和一个gridview的Web表单,这里有一些代码
protected void button1_Click(object sender, EventArgs e)
{
...retrieve data from database and bind Dataset to gridview.
}
protected void button2_Click(object sender, EventArgs e)
{
// do nothing
}
因此,当我点击button1时,它会显示带有数据的gridview,这是公平的,它应该是什么。但是当我点击button2时它仍然显示gridview数据,根据我的理解,当我点击button2时,有一个新的回发请求重新加载并发回新页面,因为button2什么都不做,不应该'是与gridview绑定的任何东西,所以页面应该什么都不显示?但它仍然显示带有数据的gridview ......
答案 0 :(得分:1)
这是一个快速示例,展示了VDWWD指出的内容。
制作新的网络表单。复制粘贴下面的代码。 点击gridview加载的第一个按钮,点击第二个按钮,你得到一个回发,但gridview仍然存在。
现在进入aspx页面并将EnableViewState =“true”更改为EnableViewState =“false”并再次运行它,此时单击第二个按钮时,gridview数据不会保留。
WebForm1.aspx的
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication3.WebForm1" EnableViewState="true" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
</div>
</form>
</body>
</html>
WebForm1.aspx.cs中
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication3
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
TestObject test1 = new TestObject()
{
firstName = "Fred",
lastName = "Smith",
phone = "334-456-7698"
};
TestObject test2 = new TestObject()
{
firstName = "Mary",
lastName = "Jones",
phone = "344-556-7558"
};
List<TestObject> list = new List<TestObject>();
list.Add(test1);
list.Add(test2);
GridView1.DataSource = list;
GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
//do nothing
}
}
internal class TestObject
{
public string firstName { get; set; }
public string lastName { get; set; }
public string phone { get; set; }
}
}