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

ASP.NET C#中GridView分页控件不显示问题求助

ASP.NET GridView分页控件不显示问题排查

问题描述

当数据集行数超过10行时,已配置GridView分页参数,但底部分页页码未显示,分页功能无法正常生效。

前端GridView标记代码

<asp:GridView ID="grvGroup" runat="server" AutoGenerateColumns="False" Width="100%" AllowPaging="True"
     PageSize="10" CssClass="mydatagrid"
     OnRowDataBound="grvGroup_RowDataBound" OnRowDeleting="grvGroup_RowDeleting" OnRowCommand="grvGroup_RowCommand"
     DataKeyNames="No" OnPageIndexChanging="grvGroup_PageIndexChanging" PagerStyle-HorizontalAlign="Center"
     PagerSettings-Mode="NumericFirstLast"
     PagerSettings-Visible="True">
   
    <Columns>
        <asp:ButtonField CommandName="Select" ButtonType="Button" ControlStyle-CssClass="Edit_btn" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" ItemStyle-Width="5px" HeaderStyle-Width="5px" />
        <asp:BoundField HeaderText="Sl.No." ItemStyle-Width="5px" HeaderStyle-Width="5px" DataField="No" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" />
        <asp:BoundField HeaderText="InvoiceNumber" ItemStyle-Width="100px" HeaderStyle-Width="100px" DataField="InvoiceNumber" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" />
        <asp:BoundField HeaderText="Vou Date" ItemStyle-Width="80px" HeaderStyle-Width="80px" DataField="CDate" HeaderStyle-HorizontalAlign="Left" DataFormatString="{0:dd/MM/yyyy}" HtmlEncode="False" ItemStyle-HorizontalAlign="Left" />
        <asp:BoundField HeaderText="BankName" ItemStyle-Width="130px" HeaderStyle-Width="130px" DataField="BankName" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" />
    </Columns>

    <EmptyDataRowStyle HorizontalAlign="Center" />
    <HeaderStyle CssClass="header" />
    <PagerStyle CssClass="pager" />
    <RowStyle CssClass="rows" />
    <AlternatingRowStyle CssClass="row-alt" />
</asp:GridView> 

后端数据绑定代码

private void BindData(long refNo = 0, int pageIndex = 0)
{
    try
    {
        int pageSize = grvGroup.PageSize; // Get the page size

        DataSet Data = CommonClass.DSWriteToTable(
            _GetBank( refNo, pageIndex, pageSize)
        );

        if (Data != null && Data .Tables.Count > 1)
        {
            DataTable dt = Data .Tables[1];

            if (dt.Rows.Count > 0)
            {
                grvGroup.AllowPaging = true;
                grvGroup.PageSize = 10;
                grvGroup.Visible = true;
                grvGroup.PageIndex = pageIndex;
                grvGroup.DataSource = dt;
                grvGroup.DataBind();
            }
            else
            {
                grvGroup.Visible = false;
            }
            
            if (Data .Tables.Count > 2 && Data .Tables[2].Rows.Count > 0)
            {
                int totalRows = Convert.ToInt32(Data .Tables[2].Rows[0]["Counts"]);
                int totalPages = (int)Math.Ceiling((double)totalRows / pageSize);
                ViewState["TotalPages"] = totalPages;
             }
        }
    }
    catch (Exception ex)
    {
    }
}

排查原因及解决方案

核心原因

你采用了手动分页逻辑,从数据库仅获取当前页的10条数据绑定到GridView,但GridView默认通过绑定的DataSource记录数判断是否显示分页控件。由于当前页数据量等于PageSize,GridView无法感知总数据量超过10条,因此不会渲染分页控件。

解决步骤

  1. 设置VirtualItemCount属性
    在获取总数据条数totalRows后,将其赋值给GridView的VirtualItemCount属性,明确告知GridView总数据量:

    if (Data .Tables.Count > 2 && Data .Tables[2].Rows.Count > 0)
    {
        int totalRows = Convert.ToInt32(Data .Tables[2].Rows[0]["Counts"]);
        int totalPages = (int)Math.Ceiling((double)totalRows / pageSize);
        ViewState["TotalPages"] = totalPages;
        // 新增:设置总数据量,让GridView识别需要分页
        grvGroup.VirtualItemCount = totalRows;
    }
    
  2. 完善PageIndexChanging事件处理
    确保分页切换事件正确调用BindData并传入新页码,示例代码:

    protected void grvGroup_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        // 保留原查询条件refNo(如果有)
        BindData(0, e.NewPageIndex);
    }
    
  3. 检查CSS样式
    确认.pager类未设置display: none或其他隐藏样式,避免分页控件被CSS隐藏:

    /* 确保分页控件可见 */
    .pager {
        display: block;
        /* 其他自定义样式 */
    }
    
  4. 验证分页参数一致性
    确保前端PageSize设置(10)和后端代码中grvGroup.PageSize = 10保持一致,避免参数不匹配导致分页逻辑异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:24:50