【问题标题】:Annoying postback and paging issue烦人的回发和分页问题
【发布时间】:2025-12-11 03:40:01
【问题描述】:

我问了一个类似的问题,但情况已经改变了。

我通过代码而不是源代码来绑定我的 gridview。

分页工作正常,但如果我单击 gridview 第二页上的按钮(分页后),回发会导致分页重置到第 1 页。谁能告诉我我做错了什么?

在我的页面加载中,我设置了如图所示的 !POSTBACK 方法,即如果有回发事件,那么它不应该重置网格,但它确实如此!

这里是加载:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["usersName"] != null)
        {

            object a = Session["_id"];

            IDMaster = Convert.ToInt32(a);

            GridView1.Columns[10].Visible = true;
            GridView1.Columns[11].Visible = true;

        }

        else
        {
            GridView1.Columns[10].Visible = false;
            GridView1.Columns[11].Visible = false;
        }




        if (!IsPostBack)
        {
           BindGrid();
        }

BindGrid();

           SqlConnection sqlcon = new SqlConnection(connstring);
           SqlCommand sqlcmd = new SqlCommand("select * from Coffees ORDER BY coffeeName ASC", sqlcon);
           SqlDataAdapter adp = new SqlDataAdapter(sqlcmd);
           DataSet ds = new DataSet();
           adp.Fill(ds);
           GridView1.DataSource = ds.Tables[0];
           GridView1.DataBind();

页面索引方法:

 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;

        if(ViewState["searchTerm"] != null)
        {
            object a = ViewState["searchTerm"];
            string reloadTerm = a.ToString();

            setGrid(reloadTerm);
       }

【问题讨论】:

    标签: c# asp.net pagination


    【解决方案1】:

    你需要在GridView1_PageIndexChanging事件中绑定你的gridview

    GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
        GridView1.PageIndex = e.NewPageIndex;
    
            if(ViewState["searchTerm"] != null)
            {
                object a = ViewState["searchTerm"];
                string reloadTerm = a.ToString();
    
                setGrid(reloadTerm);
           }
            BindGrid();
    }
    

    希望它对你有用。

    【讨论】:

    • 感谢您的回答。可悲的是,现在这给我留下了当我点击第 2 页时,gridview 消失的问题。
    • 您好,请尝试在您的活动中使用您的BindGrid() 方法而不是DataBind()。我已经更新了我的答案。
    • 再次感谢您的帮助。我已经尝试过绑定,但回发后分页仍然重置为 1
    【解决方案2】:

    由于您是动态绑定网格视图,请删除

    if (!IsPostBack)
    

    来自页面加载的条件。网格视图每次都需要绑定。

    【讨论】:

      【解决方案3】:

      我发现了这个问题。我忘记了,在我将商品添加到购物车后,我正在调用 response.redirect 来刷新页面......显然这意味着页面被召回刷新页面,因此网格总是会重置。再次感谢。

      【讨论】: