GridView分页系列

1GridView自带分页: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 void GvShow_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;

通过<PagerStyle HorizontalAlign="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" CellPadding="1"

HorizontalAlign="Center" BorderStyle="None"  AllowPaging="true" PageSize="3"

AutoGenerateColumns="False" onpageindexchanging="GvShow_PageIndexChanging" onrowdatabound="GvShow_RowDataBound" Height="132px" onrowcommand="GvShow_RowCommand">       

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

     <AlternatingRowStyle BackColor="#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分页系列

{

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

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                BindView();

                InitButtons();

            }

        }

        private void BindView()

        {

            DataTable dt = UserDemoAccess.GetUserSouce();

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

            this.GvShow.DataSource = dt;;

            this.GvShow.DataBind();

        }

        protected void GvShow_PageIndexChanging(object sender, GridViewPageEventArgs e)

        {

            this.GvShow.PageIndex = e.NewPageIndex;

            BindView();

            InitButtons();

        }

        protected void GvShow_RowDataBound(object sender, GridViewRowEventArgs e)

        {

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

           //}

        }

        protected void cmdCheck_CheckedChanged(object sender, EventArgs e)

        {

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

            //if (cmdCheck.Checked)

            //{

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

            //}

        }

        protected void GvShow_RowCommand(object sender, 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();

        }

        private void InitButtons()

        {       //获取gridviewrowsPagerTemplate底部模板

                GridViewRow gr = this.GvShow.BottomPagerRow;

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

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

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

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

               //页次 -- 第几页

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

                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;

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

                     {

                         cmdafter.Enabled = false;

                         cmdend.Enabled = false;

                     }

                }

        }

    }

}

此外还可以不利用GridView自带的分页模板标记<PagerTemplate></PagerTemplate>可以在GridView的外部构造一个talbegridview对应,这样更加灵活,也应用于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" Height="132px"

              AutoGenerateColumns="False"   onrowdatabound="GvShow_RowDataBound" >      

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

<AlternatingRowStyle BackColor="#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="跳转"  onclick="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分页系列

{

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

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                BindView();

                InitButtons();

                InitDrp();

            }

        }

        private void BindView()

        {

            DataTable dt = UserDemoAccess.GetUserSouce();

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

            this.GvShow.DataSource = dt; ;

            this.GvShow.DataBind();

        }

        protected void GvShow_RowDataBound(object sender, GridViewRowEventArgs e)

        {   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');");

            }

        }

        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;

            }

            BindView();

            InitButtons();

        }

        private void 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;

                }

            }

        }

        protected void lbtnTurnNewPage_Click(object sender, EventArgs e)

        {

            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 下拉列表分页跳转

        protected void drpPageNumbers_SelectedIndexChanged(object sender, EventArgs e)

        {

            DropDownList drpPageNumbers = (DropDownList)sender;

            //改变GridView的页签

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

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

            BindView();

            InitButtons();

        }

        private void 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()));

            }

        }

        private String 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" Height="132px"

              AutoGenerateColumns="False"  onrowdatabound="GvShow_RowDataBound"

              onpageindexchanging="GvShow_PageIndexChanging"  >      

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

<AlternatingRowStyle BackColor="#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分页系列

{

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

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                BindView();

            }

        }

        private void BindView()

        {

            DataTable dt = UserDemoAccess.GetUserSouce();

            this.GvShow.DataSource = dt; ;

            this.GvShow.DataBind();

        }

        protected void GvShow_RowDataBound(object sender, GridViewRowEventArgs e)

        {

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

            }

        }

        protected void GvShow_PageIndexChanging(object sender, GridViewPageEventArgs e)

        {

            GridViewRow gr = this.GvShow.BottomPagerRow;

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

            string content = CheckPageIndex();

            if (content != string.Empty)

            {

                Show(this, content);

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

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

                return;

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

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

            else if (e.NewPageIndex < 0)

            {

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

                this.GvShow.PageIndex = pageIndexTemp;

                BindView();

                return;

            }

            this.GvShow.PageIndex = e.NewPageIndex;

            BindView();

        }

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

        //{

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

        //         }

        //     }

        //} 

        private string CheckPageIndex()

        {

            string cotent = string.Empty;

            GridViewRow gr = this.GvShow.BottomPagerRow;

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

            try

            {

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

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

                {

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

                }

            }

            catch

            {

                cotent = "请输入数字!";

            }

            return cotent;

        }

        public static void Show(System.Web.UI.Page page, string msg)

        {

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

        }

    }

}

posted on 2011-09-08 11:13  品言  阅读(901)  评论(0编辑  收藏  举报