You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET DataGrid分页索引切换引发数据刷新异常问题

问题分析与解决方案

你的问题核心是未在回发时保留筛选状态,同时PageLoad和分页事件的绑定逻辑存在错误,导致两种状态下的分页行为异常。以下是针对性的修正方案:


1. 用ViewState保存筛选状态

添加ViewState记录当前是否处于筛选模式,确保回发时能区分应该绑定全量数据还是筛选后的数据:

2. 修正PageLoad逻辑

原代码在所有回发场景都调用bindgridfilter,导致未筛选时(日期框为空)返回空数据,分页时网格消失。调整为根据筛选状态动态绑定:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        txtDate1.Attributes.Add("placeholder", "Enter Start Date  DD//MM//YY");
        txtDate2.Attributes.Add("placeholder", "Enter End Date   DD//MM//YY");
        // 初始化筛选状态为未筛选
        ViewState["IsFiltered"] = false;
        this.bindgrid();
    }
    else
    {
        bool isFiltered = Convert.ToBoolean(ViewState["IsFiltered"]);
        if (isFiltered)
        {
            // 筛选状态下重新绑定筛选数据
            string date1 = txtDate1.Text;
            string date2 = txtDate2.Text;
            this.bindgridfilter(date1, date2);
        }
        else
        {
            // 未筛选时绑定全量数据
            this.bindgrid();
        }
    }
}

3. 修正分页索引变更事件

原事件仅修改PageIndex但未重新绑定对应数据源,GridView需要重新获取数据源才能正确分页:

protected void grdRecords_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grdRecords.PageIndex = e.NewPageIndex;
    bool isFiltered = Convert.ToBoolean(ViewState["IsFiltered"]);
    if (isFiltered)
    {
        string date1 = txtDate1.Text;
        string date2 = txtDate2.Text;
        this.bindgridfilter(date1, date2);
    }
    else
    {
        this.bindgrid();
    }
}

4. 修正筛选按钮点击事件

点击筛选时更新ViewState的筛选状态,同时处理空日期的恢复场景:

protected void Filter_Click(object sender, EventArgs e)
{
    string date1 = txtDate1.Text;
    string date2 = txtDate2.Text;
    
    if (string.IsNullOrEmpty(date1) && string.IsNullOrEmpty(date2))
    {
        // 日期为空时恢复全量数据
        this.bindgrid();
        ViewState["IsFiltered"] = false;
    }
    else
    {
        grdRecords.DataSource = null;
        this.bindgridfilter(date1, date2);
        // 标记当前处于筛选状态
        ViewState["IsFiltered"] = true;
    }
}

内容的提问来源于stack exchange,提问作者itsFerxis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:10:26