带有跳转页面DropDownList的GridView

问题描述 投票:0回答:1

您好,我想在 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;
    }
c# asp.net gridview pagination
1个回答
3
投票

更新

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);

    }
}

现在在

DataBound
Page_Load
事件中,您可以调用此方法,如下所示:

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

protected void GridView1_DataBound(object sender, EventArgs e)
{  
    BuildPageNumbers();
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.