以下是gridview的页脚                <PagerTemplate>
                    <table runat="server" id="table1">
                        <tr>
                            <td>
                                <asp:LinkButton ID="LbtnFirstPage" Text="<<" runat="server" CommandName="Page" CommandArgument="First"></asp:LinkButton>
                                <asp:LinkButton ID="LbtnPrevPage" Text="<" runat="server" CommandName="Page" CommandArgument="Prev"></asp:LinkButton>
                            </td>
                            <td>
                                <asp:Panel ID="PnlPage" runat="server">
                                </asp:Panel>
                            </td>
                            <td>
                                <asp:LinkButton ID="LbtnNextPage" Text=">" runat="server" CommandName="Page" CommandArgument="Next"></asp:LinkButton>
                                <asp:LinkButton ID="LbtnLastPage" Text=">>" runat="server" CommandName="Page" CommandArgument="Last"></asp:LinkButton>
                            </td>
                        </tr>
                    </table>
                </PagerTemplate>
以下是cs代码片断:
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Display();
            }
        }        protected void Display()
        {
            DataSet dataset = bllAddressBook.GetAllList();
            GdvBook.DataSource = dataset.Tables[0];
            GdvBook.DataBind();            Panel pnlTemp = GdvBook.BottomPagerRow.FindControl("PnlPage") as Panel;
            {
                if (pnlTemp != null)
                {
                    pnlTemp.Controls.Clear();                    int pageIndex = GdvBook.PageIndex;
                    int min = (GdvBook.PageIndex - 4);
                    int max = (GdvBook.PageIndex + 4);
                    if (max >= (GdvBook.PageCount - 1))
                        max = GdvBook.PageCount - 1;
                    if (min <= 0)
                        min = GdvBook.PageIndex;
                    for (int i = min; i <= max; i++)
                    {
                        LinkButton lbtnTemp = new LinkButton();
                        lbtnTemp.CommandName = "Page";
                        lbtnTemp.CommandArgument = i.ToString();
                        lbtnTemp.Text = (i + 1).ToString();
                        lbtnTemp.Font.Size = 11;
                        if (i == pageIndex)
                        {
                            lbtnTemp.Enabled = false;
                            lbtnTemp.Font.Bold = true;
                        }
                        pnlTemp.Controls.Add(lbtnTemp);                    }
                }
            }
        }
运行之后12345分页选项有显示出来,但是点击之后却没有响应PageIndexChanging事件,我估计它响应的是LinkButton的Click事件。怎样改才能让它们响应PageIndexChanging事件呢?
HELP!!!

解决方案 »

  1.   


    你的代碼我試了半天。。我的都好有。把你前台代碼直接COPY 過來。進行 進接響應PAGEINDEXCHANGING 事件。。如果你還是不行。。就自動去綁定數據源。不用手動。。這樣連 後台的事件都不用寫了。。看看下邊這些   首页(First Page)命令按钮
     该按钮的CommandName属性值设置为“Page”,CommandArgument属性值设置为“First”。用于执行导航,显示首页的操作。单击该按钮时,将引发PageIndexChanging和PageIndexChanged事件。
       末页(Last Page)命令按钮
     该按钮的CommandName属性值设置为“Page”,CommandArgument属性值设置为“Last”。用于执行导航,显示末页的操作。单击该按钮时,将引发PageIndexChanging和PageIndexChanged事件。
       下一页(Next Page)命令按钮
     该按钮的CommandName属性值设置为“Page”,CommandArgument属性值设置为“Next”。用于执行导航,显示下一页的操作。单击该按钮时,将引发PageIndexChanging和PageIndexChanged事件。
       上一页(Prvious Page)命令按钮
     该按钮的CommandName属性值设置为“Page”,CommandArgument属性值设置为“Prev”。用于执行导航,显示上一页的操作。单击该按钮时,将引发PageIndexChanging和PageIndexChanged事件。
       页(Page)命令按钮
     该按钮的CommandName属性值设置为“Page”,CommandArgument属性值设置为一个指示特定页的数字。用于在分页行中显示一个按钮。当其他导航按钮,例如首页、末页、下一页、上一页按钮,都不是非常适合时,可使用该命令按钮。单击该按钮时,将引发PageIndexChanging和PageIndexChanged事件。
      

  2.   

    你是点击下一页或上一页报的错吧 
     //响应DataGrid控件的分页显示换页事件
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            this.GridView1.PageIndex = e.NewPageIndex;
            BindGrid(); //这里重新绑定数据
        }
      

  3.   

    我现在的问题是“上一页”,“下一页”都正常,只有在后台动太添加的第2页,第3页之类的无法响应PageIndexChanging事件。
      

  4.   

    以下是完整代码:
                <asp:GridView ID="GdvBook" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"
                    AllowPaging="True" AutoGenerateColumns="False" PageSize="15" DataKeyNames="ID"
                    OnPageIndexChanged="GdvBook_PageIndexChanged" OnPageIndexChanging="GdvBook_PageIndexChanging"
                    OnDataBound="GdvBook_DataBound">
                    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" Font-Size="12pt" />
                    <RowStyle BackColor="#E3EAEB" Font-Size="12pt" />
                    <EditRowStyle BackColor="#7C6F57" Font-Size="12pt" />
                    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                    <PagerStyle BackColor="White" ForeColor="White" HorizontalAlign="Center" />
                    <HeaderStyle BackColor="#A2B082" Font-Bold="True" ForeColor="White" Font-Size="12pt" />
                    <AlternatingRowStyle BackColor="White" Font-Size="12pt" />
                    <Columns>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:CheckBox ID="CkbSelect" runat="server" />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField DataField="CallName" HeaderText="稱呼">
                            <ItemStyle Width="120px" />
                            <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" />
                        </asp:BoundField>
                        <asp:BoundField HeaderText="電子郵箱" DataField="Email">
                            <ItemStyle Width="180px" />
                            <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle" />
                        </asp:BoundField>
                    </Columns>
                    <PagerTemplate>
                        <table runat="server" id="table1">
                            <tr>
                                <td>
                                    <asp:LinkButton ID="LbtnFirstPage" Text="<<" runat="server" CommandName="Page" CommandArgument="First"></asp:LinkButton>
                                    <asp:LinkButton ID="LbtnPrevPage" Text="<" runat="server" CommandName="Page" CommandArgument="Prev"></asp:LinkButton>
                                </td>
                                <td>
                                    <asp:Panel ID="PnlPage" runat="server">
                                    </asp:Panel>
                                </td>
                                <td>
                                    <asp:LinkButton ID="LbtnNextPage" Text=">" runat="server" CommandName="Page" CommandArgument="Next"></asp:LinkButton>
                                    <asp:LinkButton ID="LbtnLastPage" Text=">>" runat="server" CommandName="Page" CommandArgument="Last"></asp:LinkButton>
                                </td>
                            </tr>
                        </table>
                    </PagerTemplate>
                    <PagerSettings PageButtonCount="5" />
                </asp:GridView>
            private AddressBooks.BLL._AddressBook bllAddressBook = new AddressBooks.BLL._AddressBook();
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    Display();
                }
            }        protected void Display()
            {
                DataSet dataset = bllAddressBook.GetAllList();
                GdvBook.DataSource = dataset.Tables[0];
                GdvBook.DataBind();            Panel pnlTemp = GdvBook.BottomPagerRow.FindControl("PnlPage") as Panel;            if (pnlTemp != null)
                {
                    #region
                    //LinkButton lbtnTemp1 = pnlTemp.FindControl("LbtnPage1") as LinkButton;
                    //LinkButton lbtnTemp2 = pnlTemp.FindControl("LbtnPage2") as LinkButton;
                    //LinkButton lbtnTemp3 = pnlTemp.FindControl("LbtnPage3") as LinkButton;
                    //LinkButton lbtnTemp4 = pnlTemp.FindControl("LbtnPage4") as LinkButton;
                    //LinkButton lbtnTemp5 = pnlTemp.FindControl("LbtnPage5") as LinkButton;                //if (GdvBook.PageIndex == 0)
                    //{
                    //    int pageIndex = GdvBook.PageIndex;                //    lbtnTemp1.Text = (pageIndex + 1).ToString();
                    //    lbtnTemp1.Enabled = false;
                    //    lbtnTemp1.Font.Bold = true;                //    lbtnTemp2.Enabled = true;
                    //    lbtnTemp2.Text = (pageIndex + 2).ToString();
                    //    lbtnTemp2.CommandName = "Page";
                    //    lbtnTemp2.CommandArgument = (pageIndex + 1).ToString();                //    lbtnTemp3.Enabled = true;
                    //    lbtnTemp3.Text = (pageIndex + 3).ToString();
                    //    lbtnTemp3.CommandName = "Page";
                    //    lbtnTemp3.CommandArgument = (pageIndex + 2).ToString();                //    lbtnTemp4.Enabled = true;
                    //    lbtnTemp4.Text = (pageIndex + 4).ToString();
                    //    lbtnTemp4.CommandName = "Page";
                    //    lbtnTemp4.CommandArgument = (pageIndex + 3).ToString();                //    lbtnTemp5.Enabled = true;
                    //    lbtnTemp5.Text = (pageIndex + 5).ToString();
                    //    lbtnTemp5.CommandName = "Page";
                    //    lbtnTemp5.CommandArgument = (pageIndex + 4).ToString();                //}                #endregion
                    pnlTemp.Controls.Clear();                int pageIndex = GdvBook.PageIndex;
                    int min = (GdvBook.PageIndex - 4);
                    int max = (GdvBook.PageIndex + 4);
                    if (max >= (GdvBook.PageCount - 1))
                        max = GdvBook.PageCount - 1;
                    if (min <= 0)
                        min = GdvBook.PageIndex;
                    for (int i = min; i <= max; i++)
                    {
                        LinkButton lbtnTemp = new LinkButton();
                        lbtnTemp.CommandName = "Page";
                        lbtnTemp.CommandArgument = i.ToString();
                        //lbtnTemp.Command += new CommandEventHandler(GdvBook_PageIndexChanging(lbtnTemp, GdvBook.gr));
                        lbtnTemp.Text = (i + 1).ToString();
                        lbtnTemp.Font.Size = 11;
                        if (i == pageIndex)
                        {
                            lbtnTemp.Enabled = false;
                            lbtnTemp.Font.Bold = true;
                        }
                        pnlTemp.Controls.Add(lbtnTemp);                }
                }
            }      
            protected void GdvBook_PageIndexChanged(object sender, EventArgs e)
            {
                Display();
            }        protected void GdvBook_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                GdvBook.PageIndex = e.NewPageIndex;
            }
            protected void GdvBook_DataBound(object sender, EventArgs e)
            {        }
      

  5.   

    参考
    参考,也可使用aspnetpager控件