2013-12-16 138 views
1

嗨我想有一个DropDownList外的GridView,显示页码列表。当用户点击页码时,GridView应该进入该页面。我能够填充DropDownList的,但它不是在GridViewGridView跳转到页面DropDownList

在这里工作是我的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; 
    } 

回答

2

我的代码在更新PageIndex你需要重新绑定网格,如下所示:

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

UPDATE:

因为你是动态生成下拉的页码列表项,那么你需要时回发到服务器发生或当网格是反弹,这样的重新构建它们:

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(); 
} 
+0

我尝试了数据绑定,它仍然没有工作,但我意识到,NEIT她是我的pagesize下拉菜单,分页工作也不在GridView内部。我收到错误消息无法在DropDownList中选择多个项目。当我点击数字分页。任何想法? – hollyquinn

+0

@hollyquinn - 你是否重新绑定每个“Page_Load”上的网格? –

+0

卡尔不,我不是。我可以做? – hollyquinn