当前位置:文档之家› GridView分页系列

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 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 = "首页";stPageText = "尾页";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"PageSize="3"CellPadding="1"HorizontalAlign="Center"BorderStyle="None"AllowPaging="true"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:checkboxid="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(mandName){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(){//获取gridviewrows的PagerTemplate底部模板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的外部构造一个talbe与gridview对应,这样更加灵活,也应用于div中的GridView。

相关主题