GridView分页系列

GridView分页系列

1:GridView自带分页:GridView自带的分页,是假分页,他每次从数据库把数据全部查询出之后,通过分页的算法,进行按每页数量进行分页。

分页的属性元素:分页功能的实现就是通过对这些属性元素的操作实现的。

//this.GvShow.PageIndex 当前页的索引

//this.GvShow.PageCount 总共的页数

//this.GvShow.Rows.Count 当前页签内的gridview的行数

//this.GvShow.PageSize 每页的记录数

//this.GvShow.PageIndex*this.GvShow.rows.count + 1   行索引

 

设置普通的GridView分页:属性AllowPaging="True"、PageSize="2" 设置分页事件onpageindexchanging="GvShow_PageIndexChanging"

后台方法绑定:

protected voidGvShow_PageIndexChanging(object sender, GridViewPageEventArgs e)

{

this.GvShow.PageIndex = e.NewPageIndex;

BindView();

}

2:自定义样式的GridView自带分页:

普通的GridView自带的分页,不带样式,只是普通的1,2,3等,如果希望获取到具有其他分页样式就应该设置<PagerSettings Position="TopAndBottom"   PageButtonCount="1" />属性

<%--FirstPageText="首页"LastPageText="尾页"  NextPageText="下一页" PreviousPageText="上一页"--%>

后台访问此属性的实例:

this.GvShow.PagerSettings.FirstPageText = "首页";

this.GvShow.PagerSettings.LastPageText = "尾页";

this.GvShow.PagerSettings.NextPageText = "下一页";

this.GvShow.PagerSettings.PreviousPageText ="上一页";

this.GvShow.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast;

 

通过<PagerStyleHorizontalAlign="Center" VerticalAlign="Middle" />属性可以设置GRIDVIEW分页的样式

 

3:在<PagerTemplate></PagerTemplate>分页模板中自定义分页的样式,虽然微软开辟了这个模板提供给用户类似于自定义分页的功能,但这个功能完全还是基于微软的GridView自带的分页进行的,<PagerSettings>属性的Visable的属性必须是true AllowPaging="true" 与 PageSize="3"属性页都要进行相关的有效设置才可以。这种情况下的分页可以不使用onpageindexchanging="GvShow_PageIndexChanging"微软自带的分页事件,开发自己独立的分页事件与方法即可

范例:

前台代码:

<asp:GridView id="GvShow" runat="server" Width="910px" BorderColor="#687BC4"

            BorderWidth="1px" PageSize="3"

                   CellPadding="1"HorizontalAlign="Center"BorderStyle="None"  AllowPaging="true"

                   AutoGenerateColumns="False"onpageindexchanging="GvShow_PageIndexChanging"

                onrowdatabound="GvShow_RowDataBound"Height="132px"

            onrowcommand="GvShow_RowCommand">     

                            <SelectedRowStyleForeColor="#FFFF99"BackColor="#FFFF99"></SelectedRowStyle>

                            <AlternatingRowStyleBackColor="#EEF2F1"></AlternatingRowStyle>

                            <RowStyle BackColor="White"Height="24"></RowStyle>

                            <HeaderStyle Wrap="False"HorizontalAlign="Center"Height="24px"ForeColor="Black"VerticalAlign="Middle"

                                 BackColor="#BFD5FA"></HeaderStyle>

                            <%--<PagerSettings Position="TopAndBottom"/>--%>

                            <%--FirstPageText="首页"LastPageText="尾页"  NextPageText="下一页" PreviousPageText="上一页"--%>

                          <PagerStyle ForeColor="White"HorizontalAlign="Center"BackColor="ActiveBorder"Font-Underline="false"/>

 

                            <Columns>

                                <asp:TemplateField HeaderText="省份">

                                     <ItemStyle HorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>

                                     <ItemTemplate>

                                         <asp:Label ID="lblRegionName" runat="server" Text='<%#Eval("rname")%>' ></asp:Label>

                                     </ItemTemplate>

                                 </asp:TemplateField>   

                                <asp:TemplateField HeaderText="城市">

                                     <ItemStyle HorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>

                                     <ItemTemplate>

                                         <asp:Label ID="lblCityName" runat="server" Text='<%#Eval("cname")%>' ></asp:Label>

                                     </ItemTemplate>

                                 </asp:TemplateField>

                                 <asp:TemplateField HeaderText="用户名">

                                     <ItemStyle HorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>

                                     <ItemTemplate>

                                         <asp:Label ID="lblUserName" runat="server" Text='<%#Eval("username")%>'></asp:Label>

                                     </ItemTemplate>

                                 </asp:TemplateField>

                            </Columns>

                            <PagerTemplate>

                                <table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">

                                     <tr>

                                         <td vAlign="middle" align="center">『<asp:linkbutton id="cmdbegin"runat="server"CommandName="begin"  >首页</asp:linkbutton>』

                                              『<asp:linkbutton id="cmdbefore"runat="server"CommandName="before">上一页</asp:linkbutton>』

                                              『<asp:linkbutton id="cmdafter"runat="server"CommandName="after"  >下一页</asp:linkbutton>』

                                              『<asp:linkbutton id="cmdend" runat="server"CommandName="end"  >尾页</asp:linkbutton>』

                                         </td>

                                         <td vAlign="middle" align="center">页次:<asp:label id="txtNowPage"runat="server"ForeColor="red">0</asp:label>/<asp:label id="txtAllPage" runat="server" ForeColor="red">0</asp:label>页&nbsp;

                                              共<asp:label id="txtTotal"runat="server"ForeColor="red">0</asp:label>条记录&nbsp;

                                              <asp:label id="txtNowRed" runat="server" ForeColor="red">0</asp:label>条记录/页

                                         </td>

                                         <td vAlign="top" align="center"><asp:checkbox id="cmdCheck"runat="server"Text="显示数字按钮" AutoPostBack="True" oncheckedchanged="cmdCheck_CheckedChanged" ></asp:checkbox></td>

                                     </tr>

                                </table>

                            </PagerTemplate>

                   </asp:GridView>

后台代码:

namespace GridViewDemo.GridView分页系列

{

    publicpartial class GridView自定义分页02 : System.Web.UI.Page

    {

        protectedvoid Page_Load(objectsender, EventArgs e)

        {

            if(!IsPostBack)

            {

                BindView();

                InitButtons();

            }

        }

 

        privatevoid BindView()

        {

            DataTabledt = UserDemoAccess.GetUserSouce();

            ViewState["RowCounts"] = dt.Rows.Count.ToString();

            this.GvShow.DataSource= dt;;

            this.GvShow.DataBind();

        }

 

        protectedvoid GvShow_PageIndexChanging(object sender, GridViewPageEventArgse)

        {

            this.GvShow.PageIndex= e.NewPageIndex;

            BindView();

            InitButtons();

        }

 

        protectedvoid GvShow_RowDataBound(object sender, GridViewRowEventArgse)

        {

           

            if(e.Row.RowType == DataControlRowType.DataRow)

            {

               e.Row.Attributes.Add("onmouseover","this.setAttribute('BKC',this.style.backgroundColor);this.style.cursor='default',this.style.backgroundColor='#ffff99'");

               e.Row.Attributes.Add("onmouseout","this.style.backgroundColor=this.getAttribute('BKC');");

              

            }

            //if(e.Row.RowType== DataControlRowType.Pager)

            //{

            //    GridViewRow gr = e.Row;

            //    //页次 -- 第几页

            //    Label txtNowPage =gr.FindControl("txtNowPage") as Label;

            //    //总页数

            //    Label txtAllPage =gr.FindControl("txtAllPage") as Label;

            //    //总记录数

            //    Label txtTotal =gr.FindControl("txtTotal") as Label;

            //    //条记录/页

            //    Label txtNowRed =gr.FindControl("txtNowRed") as Label;

 

 

            //    txtNowPage.Text = (this.GvShow.PageIndex+1).ToString();

            //    txtAllPage.Text =this.GvShow.PageCount.ToString();

            //    txtTotal.Text =ViewState["RowCounts"].ToString();

            //    txtNowRed.Text =this.GvShow.PageSize.ToString();

           

 

            //}

        }

 

        protectedvoid cmdCheck_CheckedChanged(object sender, EventArgse)

        {

            //CheckBox  cmdCheck =this.GvShow.BottomPagerRow.FindControl("cmdCheck") as CheckBox;

            //if(cmdCheck.Checked)

            //{

            //    this.GvShow.PagerSettings.Mode =PagerButtons.Numeric;

            //}

           

        }

 

  

        protectedvoid GvShow_RowCommand(objectsender, GridViewCommandEventArgs e)

        {

             //控制页签

             switch(e.CommandName)

             {

                 case "begin":

                     this.GvShow.PageIndex = 0;

                     ; break;

                 case "before":

                     if(this.GvShow.PageIndex> 0)

                     {

                         this.GvShow.PageIndex-= 1;

                     }

                     ; break;

                 case "after":

                     if(this.GvShow.PageIndex< this.GvShow.PageCount - 1)

                     {

                         this.GvShow.PageIndex += 1;

                     }

                     ; break;

                 case "end":

                     this.GvShow.PageIndex = this.GvShow.PageCount-1;

                     ; break;

             }

             //控制按钮

             InitButtons();

        }

 

 

        privatevoid InitButtons()

        {

 

                //获取gridviewrows的PagerTemplate底部模板

                GridViewRow gr = this.GvShow.BottomPagerRow;

                LinkButton cmdbegin = gr.FindControl("cmdbegin") asLinkButton;

                LinkButton cmdbefore = gr.FindControl("cmdbefore") asLinkButton;

                LinkButton cmdafter = gr.FindControl("cmdafter") asLinkButton;

                LinkButton cmdend = gr.FindControl("cmdend") asLinkButton;

 

 

 

                //页次 -- 第几页

                Label txtNowPage = gr.FindControl("txtNowPage") asLabel;

                //总页数

                Label txtAllPage = gr.FindControl("txtAllPage") asLabel;

                //总记录数

                Label txtTotal = gr.FindControl("txtTotal") asLabel;

                //条记录/页

                Label txtNowRed = gr.FindControl("txtNowRed") asLabel;

 

 

                txtNowPage.Text = (this.GvShow.PageIndex + 1).ToString();

                txtAllPage.Text = this.GvShow.PageCount.ToString();

                txtTotal.Text =ViewState["RowCounts"].ToString();

                txtNowRed.Text = this.GvShow.PageSize.ToString();

 

 

 

                cmdbegin.Enabled = false;

                cmdbefore.Enabled = false;

                cmdafter.Enabled = false;

                cmdend.Enabled = false;

 

                if(this.GvShow.PageCount> 1)

                {

                    cmdbegin.Enabled= true;

                   cmdbefore.Enabled = true;

                    cmdafter.Enabled = true;

                    cmdend.Enabled =true;

                     if(this.GvShow.PageIndex== 0)

                     {

                        cmdbegin.Enabled = false;

                        cmdbefore.Enabled = false;

                     }elseif(this.GvShow.PageIndex== this.GvShow.PageCount-1)

                     {

                        cmdafter.Enabled = false;

                        cmdend.Enabled = false;

                     }

                }

               

           

        }

    }

}

 

此外还可以不利用GridView自带的分页模板标记<PagerTemplate></PagerTemplate>可以在GridView的外部构造一个talbe与gridview对应,这样更加灵活,也应用于div中的GridView。

前台代码:

<table id="tablePager" runat="server" cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">

                                     <tr>

                                         <td vAlign="middle" align="center">『<asp:linkbutton id="cmdbegin"runat="server"CommandName="begin"OnCommand="PagerButton_Command"  >首页</asp:linkbutton>』

                                              『<asp:linkbutton id="cmdbefore"runat="server"CommandName="before"OnCommand="PagerButton_Command">上一页</asp:linkbutton>』

                                              『<asp:linkbutton id="cmdafter"runat="server"CommandName="after"  OnCommand="PagerButton_Command" >下一页</asp:linkbutton>』

                                              『<asp:linkbutton id="cmdend" runat="server"CommandName="end"  OnCommand="PagerButton_Command" >尾页</asp:linkbutton>』

                                         </td>

                                         <td vAlign="middle" align="center">页次:<asp:label id="txtNowPage"runat="server"ForeColor="red">0</asp:label>/<asp:label id="txtAllPage" runat="server" ForeColor="red">0</asp:label>页&nbsp;

                                              共<asp:label id="txtTotal"runat="server"ForeColor="red">0</asp:label>条记录&nbsp;

                                              <asp:label id="txtNowRed" runat="server" ForeColor="red">0</asp:label>条记录/页

                                         </td>

                                         <td vAlign="top" align="center"><asp:checkbox id="cmdCheck"runat="server"Text="显示数字按钮" AutoPostBack="True" oncheckedchanged="cmdCheck_CheckedChanged" ></asp:checkbox></td>

                                     </tr>

                       </table>

这俩种方式的区别在于:适用内部的分页模板标记,在触发事件后,不用重新绑定GridView,这个是由GridView内部的分页机制自动完成的,而采用外部构造的方式,在执行完之后,必须重新绑定gridview,因为这个时候的pageIndex等信息已经变化,需要重新进行绑定。

后台代码:

protected void PagerButton_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)

        {

            switch(e.CommandName)

            {

                case "begin":

                    this.GvShow.PageIndex = 0;

                    ; break;

                case "before":

                    if (this.GvShow.PageIndex> 0)

                    {

                        this.GvShow.PageIndex -= 1;

                    }

                    ; break;

                case "after":

                    if (this.GvShow.PageIndex< this.GvShow.PageCount - 1)

                    {

                        this.GvShow.PageIndex += 1;

                    }

                    ; break;

                case "end":

                    this.GvShow.PageIndex = this.GvShow.PageCount- 1;

                    ; break;

            }

            //在设置完页签后,将数据源重新绑定到GridView中

            BindView();

            InitButtons();

        }

一个很好样式的假分页,功能齐全:

前台页面:

<table>

                <tr>

                    <td>

                        <asp:GridView id="GvShow" runat="server"Width="910px"BorderColor="#687BC4"

                         BorderWidth="1px"PageSize="3"

                           CellPadding="1" HorizontalAlign="Center" BorderStyle="None" AllowPaging="true"

                           AutoGenerateColumns="False"

                        onrowdatabound="GvShow_RowDataBound"Height="132px"  >     

                            <SelectedRowStyleForeColor="#FFFF99"BackColor="#FFFF99"></SelectedRowStyle>

                            <AlternatingRowStyleBackColor="#EEF2F1"></AlternatingRowStyle>

                            <RowStyle BackColor="White"Height="24"></RowStyle>

                            <HeaderStyle Wrap="False"HorizontalAlign="Center"Height="24px"ForeColor="Black"VerticalAlign="Middle"

                                 BackColor="#BFD5FA"></HeaderStyle>

                        <PagerStyle ForeColor="White"HorizontalAlign="Center"BackColor="ActiveBorder"Font-Underline="false"/>

                            <PagerSettings  Mode="Numeric" Position="Bottom"  Visible="false" />

                       

                            <Columns>

                                <asp:TemplateField HeaderText="省份">

                                     <ItemStyle HorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>

                                     <ItemTemplate>

                                         <asp:Label ID="lblRegionName" runat="server" Text='<%#Eval("rname")%>' ></asp:Label>

                                     </ItemTemplate>

                                 </asp:TemplateField>   

                                <asp:TemplateField HeaderText="城市">

                                     <ItemStyle HorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>

                                     <ItemTemplate>

                                         <asp:Label ID="lblCityName" runat="server" Text='<%#Eval("cname")%>' ></asp:Label>

                                     </ItemTemplate>

                                 </asp:TemplateField>

                                 <asp:TemplateField HeaderText="用户名">

                                     <ItemStyle HorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>

                                     <ItemTemplate>

                                         <asp:Label ID="lblUserName" runat="server" Text='<%#Eval("username")%>'></asp:Label>

                                     </ItemTemplate>

                                 </asp:TemplateField>

                            </Columns>

                   </asp:GridView>

                    </td>

                </tr>

                <tr>

                    <td>

                         <table id="tablePager"runat="server"cellSpacing="0"cellPadding="0"width="100%"align="center"border="0">

                                     <tr>

                                         <td vAlign="middle" align="center">『<asp:linkbutton id="cmdbegin"runat="server"CommandName="begin"OnCommand="PagerButton_Command"  >首页</asp:linkbutton>』

                                              『<asp:linkbutton id="cmdbefore"runat="server"CommandName="before"OnCommand="PagerButton_Command">上一页</asp:linkbutton>』

                                              『<asp:linkbutton id="cmdafter"runat="server"CommandName="after"  OnCommand="PagerButton_Command" >下一页</asp:linkbutton>』

                                              『<asp:linkbutton id="cmdend" runat="server"CommandName="end"  OnCommand="PagerButton_Command" >尾页</asp:linkbutton>』

                                         </td>

                                         <td vAlign="middle" align="center">页次:<asp:label id="txtNowPage"runat="server"ForeColor="red">0</asp:label>/<asp:label id="txtAllPage" runat="server" ForeColor="red">0</asp:label>页&nbsp;

                                              共<asp:label id="txtTotal"runat="server"ForeColor="red">0</asp:label>条记录&nbsp;

                                              <asp:label id="txtNowRed" runat="server" ForeColor="red">0</asp:label>条记录/页

                                         </td>

                                         <td>

                                             <asp:LinkButton ID="lbtnTurnNewPage" runat="server" Text="跳转"

                                           οnclick="lbtnTurnNewPage_Click"></asp:LinkButton>

                                             <asp:TextBox ID="txtTurn" runat="server" Width="20"Height="20"></asp:TextBox>

                                         </td>

                                         <td>

                                             <asp:DropDownList ID="drpPageNumbers" runat="server" AutoPostBack="true"

                                           onselectedindexchanged="drpPageNumbers_SelectedIndexChanged">

                                            

                                             </asp:DropDownList>

                                         </td>

                                     </tr>

                       </table>

                    </td>

                </tr>

            </table>

后台页面:

namespace GridViewDemo.GridView分页系列

{

    publicpartial class GridView自定义分页04 : System.Web.UI.Page

    {

        protectedvoid Page_Load(objectsender, EventArgs e)

        {

            if(!IsPostBack)

            {

                BindView();

                InitButtons();

                InitDrp();

            }

        }

        privatevoid BindView()

        {

            DataTabledt = UserDemoAccess.GetUserSouce();

            ViewState["PageCount"] = dt.Rows.Count.ToString();

            this.GvShow.DataSource= dt; ;

            this.GvShow.DataBind();

        }

        protectedvoid GvShow_RowDataBound(object sender, GridViewRowEventArgse)

        {

 

            if(e.Row.RowType == DataControlRowType.DataRow)

            {

               e.Row.Attributes.Add("onmouseover","this.setAttribute('BKC',this.style.backgroundColor);this.style.cursor='default',this.style.backgroundColor='#ffff99'");

               e.Row.Attributes.Add("onmouseout","this.style.backgroundColor=this.getAttribute('BKC');");

 

            }

 

        }

        protectedvoid PagerButton_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)

        {

            switch(e.CommandName)

            {

                case "begin":

                    this.GvShow.PageIndex = 0;

                    ; break;

                case "before":

                    if (this.GvShow.PageIndex> 0)

                    {

                        this.GvShow.PageIndex -= 1;

                    }

                    ; break;

                case "after":

                    if (this.GvShow.PageIndex< this.GvShow.PageCount - 1)

                    {

                        this.GvShow.PageIndex += 1;

                    }

                    ; break;

                case "end":

                    this.GvShow.PageIndex = this.GvShow.PageCount- 1;

                    ; break;

            }

            BindView();

            InitButtons();

        }

        privatevoid InitButtons()

        {

 

            txtNowPage.Text = (this.GvShow.PageIndex + 1).ToString();

            txtAllPage.Text = this.GvShow.PageCount.ToString();

            txtTotal.Text =ViewState["PageCount"].ToString();

            txtNowRed.Text = this.GvShow.PageSize.ToString();

 

            this.cmdbegin.Enabled= false;

            this.cmdbefore.Enabled= false;

            this.cmdafter.Enabled= false;

            this.cmdend.Enabled= false;

 

            if(this.GvShow.PageCount > 1)

            {

                this.cmdbegin.Enabled = true;

                this.cmdbefore.Enabled= true;

                this.cmdafter.Enabled = true;

                this.cmdend.Enabled = true;

 

                if (this.GvShow.PageIndex== 0)

                {

                    this.cmdbegin.Enabled = false;

                    this.cmdbefore.Enabled = false;

                }

                else if (this.GvShow.PageIndex == this.GvShow.PageCount- 1)

                {

                    this.cmdafter.Enabled = false;

                    this.cmdend.Enabled = false;

                }

            }

 

        }

        protectedvoid lbtnTurnNewPage_Click(object sender, EventArgse)

        {

            try

            {

                int pageIndexNumber = Convert.ToInt32(this.txtTurn.Text.Trim());

                if (pageIndexNumber > this.GvShow.PageCount)

                {

                    Response.Write("越界!");

                    return;

                }

                else if(pageIndexNumber <= 0)

                {

                    Response.Write("负数不灵!");

                    return;

                }

                this.GvShow.PageIndex = pageIndexNumber-1;

                BindView();

                InitButtons();

            }

            catch

            {

 

                Response.Write("请输入数字!");

                return;

            }

        }

 

        #region 下拉列表分页跳转

        protectedvoid drpPageNumbers_SelectedIndexChanged(object sender, EventArgse)

        {

            DropDownListdrpPageNumbers = (DropDownList)sender;

            //改变GridView的页签

            this.GvShow.PageIndex= Convert.ToInt32(ControlDrp);

            //页签改变后,重新绑定

            BindView();

            InitButtons();

        }

 

        privatevoid InitDrp()

        {

            this.drpPageNumbers.Items.Clear();

            for(int i = 0; i <this.GvShow.PageCount;i++)

            {

                this.drpPageNumbers.Items.Add(new ListItem((i+1).ToString(),i.ToString()));

            }

        }

 

        privateString ControlDrp

        {

            set

            {

                this.drpPageNumbers.SelectedValue = value;

            }

            get

            {

                return this.drpPageNumbers.SelectedValue;

            }

        }

        #endregion

    }

}

 

一个利用<PagerTemplate></PagerTemplate>模板实现的假分页实例:(可以在绑定的时候加入dropdownlist的页面选择)

前台页面:

<asp:GridView id="GvShow" runat="server" Width="910px" BorderColor="#687BC4"

                         BorderWidth="1px"PageSize="3"

                           CellPadding="1" HorizontalAlign="Center" BorderStyle="None" AllowPaging="true"

                           AutoGenerateColumns="False"

                        onrowdatabound="GvShow_RowDataBound"Height="132px"

                        onpageindexchanging="GvShow_PageIndexChanging"  >     

                            <SelectedRowStyleForeColor="#FFFF99"BackColor="#FFFF99"></SelectedRowStyle>

                            <AlternatingRowStyleBackColor="#EEF2F1"></AlternatingRowStyle>

                            <RowStyle BackColor="White"Height="24"></RowStyle>

                            <HeaderStyle Wrap="False"HorizontalAlign="Center"Height="24px"ForeColor="Black"VerticalAlign="Middle"

                                 BackColor="#BFD5FA"></HeaderStyle>

                        <PagerStyle ForeColor="Blue"HorizontalAlign="Center"BackColor="ActiveBorder"Font-Underline="false"/>

                            <Columns>

                                <asp:TemplateField HeaderText="省份">

                                     <ItemStyle HorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>

                                     <ItemTemplate>

                                         <asp:Label ID="lblRegionName" runat="server" Text='<%#Eval("rname")%>' ></asp:Label>

                                     </ItemTemplate>

                                 </asp:TemplateField>   

                                <asp:TemplateField HeaderText="城市">

                                     <ItemStyle HorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>

                                     <ItemTemplate>

                                         <asp:Label ID="lblCityName" runat="server" Text='<%#Eval("cname")%>' ></asp:Label>

                                     </ItemTemplate>

                                 </asp:TemplateField>

                                 <asp:TemplateField HeaderText="用户名">

                                     <ItemStyle HorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>

                                     <ItemTemplate>

                                        <asp:Label ID="lblUserName"runat="server"Text='<%#Eval("username")%>'></asp:Label>

                                     </ItemTemplate>

                                 </asp:TemplateField>

                            </Columns>

                            <PagerTemplate>

                            <table align="right"bgcolor="#e9e9e9"width="100%">

                                <tr>

                                  <td style="text-align: right">

                                      [第<b><asp:Label ID="lblPageIndex"runat="server"Text="<%#((GridView)Container.Parent.Parent).PageIndex+ 1 %>"></asp:Label></b>页]

                                      [共<b><asp:Label ID="lblPageCount"runat="server"Text="<%#((GridView)Container.Parent.Parent).PageCount %>"></asp:Label></b>页]

                                       <asp:LinkButton ID="btnFirst"runat="server"CausesValidation="False"CommandArgument="First"

                                           CommandName="Page"Enabled="<%#((GridView)Container.NamingContainer).PageIndex != 0 %>"

                                         Text="首页"></asp:LinkButton>

                                      <asp:LinkButton ID="btnPrev"runat="server"CausesValidation="False"CommandArgument="Prev"

                                           CommandName="Page"Enabled=" <%#((GridView)Container.NamingContainer).PageIndex != 0 %>"

                                          Text="上一页"></asp:LinkButton>

                                       <asp:LinkButton ID="btnNext"runat="server"CausesValidation="False"CommandArgument="Next"

                                           CommandName="Page"Enabled=" <%#((GridView)Container.NamingContainer).PageIndex !=((GridView)Container.NamingContainer).PageCount - 1 %>"

                                         Text="下一页"></asp:LinkButton>

                                       <asp:LinkButton ID="btnLast"runat="server"CausesValidation="False"CommandArgument="Last"

                                           CommandName="Page"Enabled=" <%#((GridView)Container.NamingContainer).PageIndex !=((GridView)Container.NamingContainer).PageCount - 1 %>"

                                           Text="尾页"></asp:LinkButton>

                                       <asp:TextBox ID="txtNewPageIndex"runat="server"Text="<%#((GridView)Container.Parent.Parent).PageIndex + 1%>"

                                           Width="20px"></asp:TextBox>

                                      <asp:LinkButton ID="btnGo" runat="server"CausesValidation="false"CommandArgument="-1"

                                          CommandName="Page"Text="GO"></asp:LinkButton>

                                    </td>

                               </tr>

                            </table>

                        </PagerTemplate>

                   </asp:GridView>

 

namespace GridViewDemo.GridView分页系列

{

    publicpartial class GridView自定义分页05 : System.Web.UI.Page

    {

        protectedvoid Page_Load(objectsender, EventArgs e)

        {

            if(!IsPostBack)

            {

                BindView();

            }

        }

 

        privatevoid BindView()

        {

            DataTabledt = UserDemoAccess.GetUserSouce();

            this.GvShow.DataSource= dt; ;

            this.GvShow.DataBind();

        }

 

        protectedvoid GvShow_RowDataBound(object sender, GridViewRowEventArgse)

        {

 

            if(e.Row.RowType == DataControlRowType.DataRow)

            {

               e.Row.Attributes.Add("onmouseover","this.setAttribute('BKC',this.style.backgroundColor);this.style.cursor='default',this.style.backgroundColor='#ffff99'");

               e.Row.Attributes.Add("onmouseout","this.style.backgroundColor=this.getAttribute('BKC');");

 

            }

 

        }

 

        protectedvoid GvShow_PageIndexChanging(object sender, GridViewPageEventArgse)

        {

            GridViewRowgr = this.GvShow.BottomPagerRow;

            TextBoxtxtNewPageIndex = gr.FindControl("txtNewPageIndex")as TextBox;

            stringcontent = CheckPageIndex();

            if(content != string.Empty)

            {

                Show(this, content);

                //如果发现异常,则重新将文本框中的值,置换成当前页签的!

                txtNewPageIndex.Text= (this.GvShow.PageIndex+1).ToString();

                return;

            }//NewPageIndex 本页跳转点击go的时候,为-2,增加一个处理!微软自带分页中,选中页签当前页无法再点击

            //此时的e.NewPageIndex默认为-2

            elseif (e.NewPageIndex < 0)

            {

               

                int pageIndexTemp = Convert.ToInt32(txtNewPageIndex.Text)- 1;

                this.GvShow.PageIndex = pageIndexTemp;

                BindView();

                return;

            }

            this.GvShow.PageIndex= e.NewPageIndex;

            BindView();

        }

 

        //protectedvoid LinkTurn_Command(object sender,System.Web.UI.WebControls.CommandEventArgse)

        //{

        //     if (e.CommandArgument.ToString() =="-1")

        //     {

        //         GridViewRow gr =this.GvShow.BottomPagerRow;

               

        //         TextBox txtNewPageIndex =gr.FindControl("txtNewPageIndex") as TextBox;

        //         try

        //         {

        //             int pageIndex =Convert.ToInt32(txtNewPageIndex.Text);

        //             string content =CheckPageIndex(pageIndex, "command");

        //             if ( content != string.Empty)

        //             {

        //                 Show(this, content);

        //                 return;

        //             }

        //             this.GvShow.PageIndex = pageIndex- 1;

        //             BindView();

        //         }

        //         catch

        //         {

 

        //             Show(this, "只能输入数字格式!");

        //             return;

                    

        //         }

        //     }

        //}

 

        privatestring CheckPageIndex()

        {

            stringcotent = string.Empty;

            GridViewRowgr = this.GvShow.BottomPagerRow;

            TextBoxtxtNewPageIndex = gr.FindControl("txtNewPageIndex")as TextBox;

            try

            {

                int pageIndexTemp = Convert.ToInt32(txtNewPageIndex.Text);

                if (pageIndexTemp <= 0 || pageIndexTemp > this.GvShow.PageCount)

                {

                    cotent = "你越位了,朋友!";

                }

            }

            catch

            {

 

                cotent = "请输入数字!";

            }

            returncotent;

        }

 

        publicstatic voidShow(System.Web.UI.Page page, string msg)

        {

           page.ClientScript.RegisterStartupScript(page.GetType(), "message", "<scriptlanguage='javascript' defer>alert('" + msg.ToString() + "');</script>");

        }

    }

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值