在ASP.NET

时间:2017-01-08 00:48:21

标签: c# asp.net events lifecycle

我是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 ......

1 个答案:

答案 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; }
    }
}