【问题标题】:ASP.Net Gridview paging, pageindex always == 0ASP.Net Gridview 分页,pageindex 总是 == 0
【发布时间】:2010-05-26 11:04:17
【问题描述】:

编辑:现在工作,见下文。

大家好,

我的 ASP.Net 3.5 应用程序有一点问题。我正在尝试让程序获取已单击的页码。我正在使用 ASP.Net 内置的 AllowPaging="True" 函数。没有代码就不一样了,所以这里是:

ASP.Net:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
            GridLines="Vertical" Width="960px" AllowSorting="True" 
            EnableSortingAndPagingCallbacks="True" AllowPaging="True" PageSize="25" >
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#999999" />
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        </asp:GridView>

C#:

var fillTable = from ft in db.IncidentDatas
                                where ft.pUserID == Convert.ToInt32(ClientList.SelectedValue.ToString())
                                select new
                                {
                                    Reference = ft.pRef.ToString(),
                                    Date = ft.pIncidentDateTime.Value.Date.ToShortDateString(),
                                    Time = ft.pIncidentDateTime.Value.TimeOfDay,
                                    Premesis = ft.pPremises.ToString(),
                                    Latitude = ft.pLat.ToString(),
                                    Longitude = ft.pLong.ToString()
                                };
                if (fillTable.Count() > 0)
                {
                    GridView1.DataSource = fillTable;
                    GridView1.DataBind();
                    var IncidentDetails = fillTable.ToList();
                    for (int i = 0; i < IncidentDetails.Count(); i++)
                    {
                        int pageno = GridView1.PageIndex;
                        int pagenostart = pageno * 25;
                        if (i >= pagenostart && i < (pagenostart + 25))
                        {
                            //Processing
                        }
                    }
                 }

知道为什么 GridView1.PageIndex 总是 = 0 吗?问题是,网格视图的处理工作正常......它总是会转到正确的分页页面,但是当我尝试获取数字时它总是 0。救命!

【问题讨论】:

    标签: c# asp.net gridview page-index-changed


    【解决方案1】:

    在调用GridView1.DataBind 之前,您是否尝试过访问GridView1.PageIndex?当您分配新数据源并将其绑定到网格时,它可能会被重置。

    【讨论】:

      【解决方案2】:

      嗯...别介意这个。我删除了 GridView 并添加了另一个,添加了 PageIndexChanging 事件,然后使用了 e.NewPageIndex。出于某种原因,它不允许我在另一个 GridView 上使用该事件。很奇怪。

      【讨论】:

        【解决方案3】:

        回来查看您的帖子,您可能会在每次页面加载时重新加载网格,因此当您分页时,您可能会调用填充网格的代码并重置页面索引。您需要确保仅在它不是回发时才加载它,如果是回发,则必须从 ViewState 等存储区域获取数据和适当的 pageIndex。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-09
          • 1970-01-01
          • 2011-04-15
          • 2014-09-16
          相关资源
          最近更新 更多