GridView with Jump to Page DropDownList

时间:2013-12-16 15:03:19

标签: c# asp.net gridview paging

您好我想在我的GridView外部有一个显示页码列表的DropDownList。当用户点击页码时,GridView应该转到该页面。我能够填充DropDownList,但它不能使用GridView

这是我的GridView和DropDownList

<asp:DropDownList ID="ddlPageNumber" runat="server" AutoPostBack="True"      OnSelectedIndexChanged="ddlPaging_SelectedIndexChanged">
        </asp:DropDownList> &nbsp;of 
         <%=GridView1.PageCount%>


    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
    AllowSorting="True" AutoGenerateColumns="False" BorderStyle="Solid" GridLines="Both" HeaderStyle-BackColor="#990033" Width="1000px" 
    DataSourceID="EntityDataSource1"  OnRowDataBound="GridView1_RowDataBound" OnDataBound="GridView1_DataBound">
         <HeaderStyle ForeColor="White"></HeaderStyle>
    <Columns>
        <asp:BoundField DataField="intBatchID" HeaderText="Batch ID" ReadOnly="True" 
            SortExpression="intBatchID" />
        <asp:BoundField DataField="vcharName" HeaderText="Name" ReadOnly="True" 
            SortExpression="vcharName" />
        <asp:BoundField DataField="dtmScheduled" HeaderText="Date Scheduled" 
            ReadOnly="True" SortExpression="dtmScheduled" />
        <asp:BoundField DataField="intBatchPriorityLevel" 
            HeaderText="Priority Level" ReadOnly="True" 
            SortExpression="intBatchPriorityLevel" />
    </Columns>
    <PagerSettings Mode="NumericFirstLast" Position="TopAndBottom" PageButtonCount="4" PreviousPageText="Previous" NextPageText="Next" FirstPageText="First" LastPageText="Last" />
    <PagerStyle HorizontalAlign="Center" />        
</asp:GridView>   

这是我背后的代码

protected void GridView1_DataBound(object sender, EventArgs e)
    {   
        for (int cnt = 0; cnt < GridView1.PageCount; cnt++)
        {
            int curr = cnt + 1;

            ListItem item = new ListItem(curr.ToString());

            if (cnt == GridView1.PageIndex)
            {
                item.Selected = true;
            }

            ddlPageNumber.Items.Add(item);

        }
    }

    protected void ddlPaging_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridView1.PageIndex = ddlPageNumber.SelectedIndex;
    }

1 个答案:

答案 0 :(得分:2)

更新PageIndex后需要重新绑定网格,如下所示:

protected void ddlPaging_SelectedIndexChanged(object sender, EventArgs e)
{
    GridView1.PageIndex = ddlPageNumber.SelectedIndex;
    GridView1.DataBind();
}

更新:

由于您正在动态构建页码的下拉列表项,因此每当发回服务器的帖子或网格反弹时,您都需要重新构建它们,如下所示:

private void BuildPageNumbers()
{
    ddlPageNumber.Items.Clear();

    for (int cnt = 0; cnt < GridView1.PageCount; cnt++)
    {
        int curr = cnt + 1;

        ListItem item = new ListItem(curr.ToString());

        if (cnt == GridView1.PageIndex)
        {
            item.Selected = true;
        }

        ddlPageNumber.Items.Add(item);

    }
}

现在,在您的DataBoundPage_Load事件中,您可以调用此方法,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    BuildPageNumbers();
}

protected void GridView1_DataBound(object sender, EventArgs e)
{  
    BuildPageNumbers();
}