GridView如何實現分頁-程式碼區

程式碼區(配合GridView控制項文章一起看)

分頁功能程式碼區(cs): 

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

        //protected void lkbNext_Click(object sender, EventArgs e)
        //{
        //    GridView1.PageIndex++;
        //}

        //protected void lkbPrev_Click(object sender, EventArgs e)
        //{
        //    if (GridView1.PageIndex > 0) //避免超出引數範圍
        //    {
        //        GridView1.PageIndex--;
        //    }

        //}
        protected void PageChange_Click(object sender, EventArgs e)
        {
            if (((LinkButton)sender).ID == "lkbPrev") //把sender轉換成LinkButton來指定屬性,重要寫法要理解!!
            {
                if (GridView1.PageIndex > 0) //避免超出引數範圍 不能用>=0 是因為等於0時會成立條件 造成-1
                //上一頁  
                GridView1.PageIndex--;
            }
            else
            {   //下一頁
                GridView1.PageIndex++;
            }

        }

        protected void GridView1_DataBound(object sender, EventArgs e)
        {
            TableCell tc = GridView1.BottomPagerRow.Cells[0]; //宣告一個表格元素變數,將GridView1的頁碼最一個row元素賦值給他
            string page = "page " + (GridView1.PageIndex + 1) + " of " + GridView1.PageCount;
            Label lblInfo = (Label)tc.FindControl("lblInfo");
            lblInfo.Text = page;
            //  find單字 找
            // ((Label)GridView1.BottomPagerRow.Cells[0].FindControl("lblInfo")).Text = page; //完整寫法
            ListItem item;
            DropDownList ddlPager = (DropDownList)tc.FindControl("ddlPager");

            for (int i = 1; i <= GridView1.PageCount; i++)
            {
                item = new ListItem(i.ToString());
                // item.Text = i.ToString();
                ddlPager.Items.Add(item);

                if (GridView1.PageIndex == i-1)//GridView1.PageIndex屬性為目前顯示頁面之以零起始的索引,所以必須-1。
                    item.Selected = true;
                
                //((DropDownList)GridView1.BottomPagerRow.Cells[0].FindControl("ddlPager")).Items.Add(item);
            }
        }

        protected void ddlPager_SelectedIndexChanged(object sender, EventArgs e)
        {
            DropDownList ddlPager = (DropDownList)GridView1.BottomPagerRow.Cells[0].FindControl("ddlPager");

            GridView1.PageIndex = ddlPager.SelectedIndex;//將選取之後的值賦值給GridView頁碼進行跳轉頁面
        }

aspx:

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" PageSize="3" AllowPaging="true" OnDataBound="GridView1_DataBound">
    <PagerTemplate>
        <table style="width:100%">
             <tr>
                 <td>
                   <asp:LinkButton ID="lkbPrev" runat="server" CssClass="btn" OnClick="PageChange_Click">3</asp:LinkButton>
                   <asp:LinkButton ID="lkbNext" runat="server" CssClass="btn" OnClick="PageChange_Click">4</asp:LinkButton>
                   <asp:DropDownList ID="ddlPager" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlPager_SelectedIndexChanged" >
                   </asp:DropDownList>
                 </td>
                 <td style="text-align:right">
                     <asp:Label ID="lblInfo" runat="server"></asp:Label>  
                 </td>
              </tr>
           </table>                                  
     </PagerTemplate>
</asp:GridView>