手机版

asp.net webform自定义分页控件

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

做网开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件。

翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册。

有图有真相,给个直观的认识:

自定义分页控件前台代码:

样式类型='text/css ' .传呼机-m-l { margin-left : 10px;} .寻呼机{ font-family : ' Helvetica纽伊',Helvetica,阿里亚尔,无衬线;font-size : 14px颜色: # 333背景-color : # fff;文本对齐:中心;border: 1px固体# eee border-radius : 5px;高度: 30px线高: 30px余量: 10px自动;宽度: 650像素;} .font-blue { color : # 5bc 0de;} .传呼机a { color: # 5bc0de文本装饰:无;} .寻呼机a.gray { color: # 808080}。pager-num { width : 30px;文本对齐:中心;} .寻呼机表单控件{ color: # 555背景-color : # fff;背景-图像:无;border: 1px固体# cccborder-radius : 4px;-web套件-box-shadow :插图0 1px 1px rgba(0,0,0,075);箱形阴影:插图0 1px 1px rgba(0,0,0,075);-网络套件-transit :边框-彩色轻松进出。15s网络工具包-盒子-阴影轻松进出。15s-o-transit :边框-彩色宽松。15秒,框影宽松。15s过渡:边框-彩色轻松进出。15秒,框影轻松进出。15spadd : 2px 0pxmargin : 0px 2px }。寻呼机-窗体-控件:焦点{边框-颜色: # 66 AFE 9;轮廓: 0;-web套件-box-shadow :插图0 1px 1px rgba(0,0,0,075),0 0 8px rgba(102,175,233,6);箱形阴影:插图0 1px 1px rgba(0,0,0,075),0 0 8px rgba(102,175,233,6);} .btn {显示:内联块;padd : 2px font-weight :正常;文本对齐:中心;空白: nowrap垂直对齐: 中间;-ms-touch-action:操作;触摸操作:操作;光标:指针;-网络工具包-用户-选择:无;蚊子用户-选择:无;-ms-用户-选择:无;用户选择:无;背景-图像:无;border: 1px固体透明;边界半径: 4px} .BTN默认{ color: # 333背景-color : # fff;边框颜色: # CCC}/stylediv class='pager' span当前asp3360标签runat=' server ' ID=' labCurrentPageIndex ' CSS class=' font-blue '/asp3360标签/asp:标签runat=' server ' CSS class=' font-blue ' ID=' labTotalNumberOfPages '/asp3360标签页/span span class='pager-m-l '共asp3360标签runat=' server ' csclass=' font-blue ' ID=' labRecordCount '/asp3360标签条记录/span span class=' pager-m-l ' ASP :链接按钮runat=' server ' ID=' lab first page ' OnClick=' lab first page _ Click '首页/asp3360链接按钮| asp3360链接按钮runat=' server ' ID=' labPreviousPage ' OnClick=' labPreviousPage _ Click '上一页/asp3360链接按钮| asp3360链接按钮runat=' server ' ID=' labNextPage ' OnClick=' labNextPage _ Click '下一页/asp3360链接按钮| asp3360链接按钮runat='服务器' ID='标签页' OnClick='标签页_ Click '尾页/asp3360链接按钮/span span class=' pager-m-l '跳至asp3360 textbox runat=' server ' ID=' txtPageNum ' CSS class=' pager-form-control pager-num ' 1/asp: textbox页asp:按钮runat=' server ' Text=' GO ' ID=' btnGo ' CSS class=' BTN BTN-默认' OnClick=' btnGo _ Click '/span span class=pager-m-l ' asp3360 dropdownlist runat=' server ' ID=' ddlPageSize ' CSS class=' pager-form-control ' AutoPostBack=' true ' OnSelectedIndexChanged=' ddlPageSize _ SelectedIndexChanged ' as : listitem Text=' 10条/每页/span/div自定义分页控件后台代码:

私有常量字符串viewstatecuretpageindex=' CurrentPageindex ';私有常量字符串viewstatecordcount=' RecordCount ';public delegate void page changedhandle();公共事件页面已更改页面已更改;public int page size { get { return Convert .至t32(ddlPageSize .选定值);} } public int CurrentPageIndex { set { ViewState[ViewStateCurrentPageIndex]=value;}获取{ if(ViewState[ViewStateCurrentPageIndex]==null){ ViewState[ViewStateCurrentPageIndex]=1;}返回转换.ToInt32(视图状态[视图状态当前索引]);} } public int RecordCount { get { if(viewstatecordcount[viewstatecordcount]==null){ ViewState[viewstatecordcount]=0;}返回转换.ToInt32(视图状态[视图状态记录计数]);}设置{ ViewState[viewstattrecordcount]=值;} } private int TotalNumberofPages { get { return RecordCount % PageSize==0?记录计数/页面大小:(记录计数/页面大小)1;} }受保护的无效页面_加载(对象发送方,EventArgs e) { if(!IsPostBack) { } }受保护的作废第一页_点击(对象发送方,事件参数e){ CurrentPageIndex=1;这个. DataBind();}受保护的作废实验室预览页面_点击(对象发送者,事件参数e){ CurrentPageIndex-=1;这个. DataBind();}受保护的作废labNextPage_Click(对象发送方,事件参数e){ CurrentPageIndex=1;这个. DataBind();}受保护的void标签页面_点击(对象发送者,事件参数e){ CurrentPageIndex=TotalNumberofPages;这个. DataBind();}受保护的void btnGo_Click(对象发送者,EventArgs e){ int page num=1;bool isNum=Int32 .TryParse(Txttagenum .文字,出页码);if(IsNum){ CurrentPageIndex=Math .最小值(页数,总页数);}这个. DataBind();}受保护的void ddlPageSize _ SelectedIndexChanged(对象发送方,事件参数e){ CurrentPageIndex=1;这个. DataBind();}受保护的重写void DataBind(bool raiseOnDataBinding){ BindPager();基地. DataBind(RaiseOnDataBinding);if (OnPageChanged!=null){ OnPageChanged();} } private void BindPager(){ labcurrentPageIndex .文本=当前页面索引.ToString();labTotalNumberOfPages .文本=总页数.ToString();实验室记录计数.文本=记录数.ToString();setnavigationenabled();} private void setnavigationenabled(){ TxTagEnum .文本=当前页面索引.ToString();第一页.Enabled=truelabPreviousPage .Enabled=truelabNextPage .使能=真标签页启用=真实第一页.CSS类=' font-blue ';labPreviousPage .CSS类=' font-blue ';下一页.CSS类=' font-blue ';标签页CSS类=' font-blue ';if(CurrentPageIndex==1){ lab first page .Enabled=falselabPreviousPage .Enabled=falselabFirstPage .CssClass=' graylabPreviousPage .CSS class=' gray } if(CurrentPageIndex==TotalNumberofPages){ LabnextPage .使能=假标签页启用=假下一页.CssClass='灰色标签页CssClass=' gray} if(记录计数==0){ labfirst page .Enabled=falselabPreviousPage .Enabled=falselabFirstPage .CssClass=' graylabPreviousPage .CssClass=' graylabNextPage .使能=假标签页启用=假下一页.CssClass='灰色标签页CssClass=' gray} }当前页码、总共多少条记录使用视图状态记录状态信息,因为导航控件会引起回发刷新。分页后的数据加载,使用事件。

事件的具体实现放在使用分页控件的具体页面中,进行事件的注册。

测试分页控件的前台页面:

div style='边距-底部:10 px'Text : AsP : TextBox ID=' TxtContent ' runat=' server '/AsP : TextBox AsP : Button ID=' BtEnquery ' runat=' server ' Text='查询OnClick=' btenquery _ Click '/div/div ASP 3360 GridView ID=' gvList ' runat=' server ' Width=' 99% ' AutoGenerateColumns=' true '/ASP : GridView UC 1:页控件runat=' server ' ID=' Pager '/div测试分页控件的后台代码:

私有常量字符串DtsourceViewStateKey=' DtsourceViewStateKey ';受保护的无效页面_加载(对象发送方,事件参数e) { if(!IsPostBack){ Binddata(true);}寻呼机OnPageChanged=OnPageChanged } private void BindDatabaSe(bool BindRecordcount){ DataTable dtSource=GetDataSource();var source=dtSource .asennumerable();if(!字符串IsNullOrEmpty(txtContent .文字。Trim())) { source=source .其中(w=w.Fieldstring('text ').包含(txtContent .文字。trim()));} if (bindRecordCount) {寻呼机.记录计数=来源.count();寻呼机CurrentPageIndex=1;寻呼机. DataBind();} gvList .数据源=源。跳过((寻呼机。当前页面索引- 1) *页面。页面大小)。带(寻呼机。页面大小)。选择(r=new { id=r['id']).ToString(),text=r['text'].ToString() }).to list();gvList .DataBind();} private void OnPageChanged(){ BiNDDATa(false);}私有DataTable InitDataTable(){ DataTable dtSource=new DataTable();DataColumn id=new DataColumn(' id ');身份证。自动增量=真;身份证。自动增量种子=1;dtSource .列。添加(标识);dtSource .列。添加('文本');for(int I=1;i=1000i ) { DataRow dr=dtSource .NewRow();dr['text']='内容我;dtSource .行。添加(dr);}返回dtSource}私有DataTable getdata source(){ if(视图状态[dtSourceViewStateKey]==null){视图状态[dtSourceViewStateKey]=InitDataTable();}将视图状态[dtSourceViewStateKey]作为数据表返回;}受保护的作废查询_点击(对象发送者,事件参数e){ BiNDDATa(true);}在页面加载中注册翻页后的事件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:asp.net webform自定义分页控件是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。