我无法在GridView的每个页面中显示分页,并以列表作为源

时间:2013-11-27 05:34:18

标签: c# asp.net linq gridview pagination

我正在尝试为具有LINQ生成列表的GridView设置分页,但是我在GridView中编写处理OnPageIndexChanging属性的函数按计划显示记录,页脚的页脚数当我导航到任何页面时消失。我很欣赏这方面的一些方向,因为我是C#和asp的新手,我不知道为什么会发生这种情况。我意识到有很多方法可以做到这一点,有些涉及new GridViewRow()甚至用自定义html生成EmptyDataTemplate,但我不太明白这些函数的用途。如果有人评论我的代码,我很遗憾,我会很感激。

我当然使用AllowPaging设置了GridView,我的Pager设置为:mode NumericFirstLast,Visible = true。当我调试代码时,页脚可见性显示它是真的,但页码数量消失了。 我的asp就像这样(并非所有我只包含GridView的定义):

<asp:GridView ID="GridCol" runat="server" DataKeyNames="identMovimiento" 
                    AllowPaging="True" ShowFooter="True"     OnDataBound="GridCol_DataBound" OnPageIndexChanging="PaginarCol">

PaginarCol函数是这样的(我在这里大致重复一些我在Page_Load函数中使用的代码,因为我想用相同的源再次填充GridView:

protected void PaginarCol(object sender, GridViewPageEventArgs e)
        {
        GridCol.PageIndex = e.NewPageIndex;
        int numResultados, inicioResultados;
        matriculas identificacion = new     obtenerMatricula().getMatriculaDatos(User.Identity.Name);
        int idusuario = identificacion.matriculaId;
        obtenerAdeudos Lista = new obtenerAdeudos();
        List<Adeudos> ListaAdeudos = Lista.getAdeudosCol(idusuario);
        int maxResultados = ListaAdeudos.Count();
        numResultados = 10; inicioResultados = GridCol.PageIndex*10;
        List<Adeudos> filasAdeudos =     ListaAdeudos.Skip(inicioResultados).Take(numResultados).ToList();
        GridCol.DataSource = filasAdeudos;
        GridCol.DataBind();
        GridCol.BottomPagerRow.Visible = true;
        } 

1 个答案:

答案 0 :(得分:1)

您的页码正在消失,因为在页面索引更改事件(PaginarCol())中,由于Skip()Take()调用,您只能绑定一页数据。由于网格只与一页数据绑定,因此不需要页码,因此它们会消失。

我的猜测是,由于您没有发布Page_Load代码,因此您最初是绑定整个列表而不是使用Skip()Take()来获取一页数据。这实际上会导致网格意识到有数据页而不是只有一页,因此在首次加载网格时会出现页码。

如果您希望现有代码实际显示页码,请删除整行:

List<Adeudos> filasAdeudos =     
    ListaAdeudos.Skip(inicioResultados).Take(numResultados).ToList();

现在只需直接绑定到ListaAdeudos,就像这样:

GridCol.DataSource = ListaAdeudos;

由于您的PaginarCol()方法正在通过以下行更新网格的网页索引值:

GridCol.PageIndex = e.NewPageIndex;

重新绑定网格将负责选择正确的页码,并继续显示所有页码。