时间:2016-02-15 22:19 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【asp.net中使用自定义控件的方式实现一个分页控件的代码】,下面是详细的讲解!
asp.net中使用自定义控件的方式实现一个分页控件的代码
namespace CustomControl
{
public delegate void PageOnEventHandler(object sender, EventArgs args);
[DefaultProperty("PageSize")]
[ToolboxData("<{0}:PageOn runat=server Width=100%></{0}:PageOn>")]
public class PageOn :CompositeControl
{
#region
Label lblMessage;
LinkButton btnFirst;
LinkButton btnPrev;
LinkButton btnNext;
LinkButton btnLast;
TextBox txtGoPage;
Button btnGo;
#endregion
protected override void CreateChildControls()
{
Controls.Clear();
lblMessage=new Label();
lblMessage.Text="当前第" + CurPage + "页 共" + PageCount + "页 共" + RowCount + "条记录";
lblMessage.ID="lblMessage";
Controls.Add(lblMessage);
btnFirst=new LinkButton();
btnFirst.Text="首页";
btnFirst.CommandName="first";
btnFirst.ID="btnFirst";
if (CurPage <=1)
{
btnFirst.Enabled=false;
}
Controls.Add(btnFirst);
btnPrev=new LinkButton();
btnPrev.Text="上一页";
btnPrev.CommandName="prev";
btnPrev.ID="btnPrev";
if (CurPage <=1)
{
btnPrev.Enabled=false;
}
Controls.Add(btnPrev);
btnNext=new LinkButton();
btnNext.Text="下一页";
btnNext.CommandName="next";
btnNext.ID="btnNext";
if (CurPage >=PageCount)
{
btnNext.Enabled=false;
}
Controls.Add(btnNext);
btnLast=new LinkButton();
btnLast.Text="末页";
btnLast.CommandName="last";
btnLast.ID="btnLast";
if (CurPage >=PageCount)
{
btnLast.Enabled=false;
}
Controls.Add(btnLast);
txtGoPage=new TextBox();
txtGoPage.TabIndex=1;
txtGoPage.ID="txtGoPage";
txtGoPage.Attributes.Add("onkeyup", @"this.value=this.value.replace(/\D/g,'')");
txtGoPage.Attributes.Add("onafterpaste", @"this.value=this.value.replace(/\D/g,'')");
Controls.Add(txtGoPage);
btnGo=new Button();
btnGo.TabIndex=2;
btnGo.CommandName="go";
btnGo.Text="GO";
btnGo.ID="btnGO";
Controls.Add(btnGo);
Debug.WriteLine("ffffffffffffffffffffffffffffffffffffffffffffffffff");
base.CreateChildControls();
}
public int RowCount
{
get
{
if (ViewState["m_rowCount"]==null || int.Parse(ViewState["m_rowCount"].ToString()) < 0)
{
ViewState["m_rowCount"]=0;
}
return int.Parse(ViewState["m_rowCount"].ToString());
}
set
{
if (value < 0)
{
ViewState["m_rowCount"]=0;
}
else
{
ViewState["m_rowCount"]=value;
}
this.RecreateChildControls();
}
}
public int CurPage
{
get
{
if (ViewState["m_curPage"]==null || int.Parse(ViewState["m_curPage"].ToString()) < 1)
{
ViewState["m_curPage"]=1;
}
return int.Parse(ViewState["m_curPage"].ToString());
}
set
{
if (value < 1)
{
ViewState["m_curPage"]=1;
}
else if (value > PageCount)
{
ViewState["m_curPage"]=PageCount;
}
else
{
ViewState["m_curPage"]=value;
}
}
}
public int PageCount
{
get
{
return RowCount / PageSize + 1;
}
}
public int PageSize
{
get
{
if (ViewState["m_pageSize"]==null || int.Parse(ViewState["m_pageSize"].ToString()) < 1)
{
ViewState["m_pageSize"]=15;
}
return int.Parse(ViewState["m_pageSize"].ToString());
}
set
{
if (value > 0)
{
ViewState["m_pageSize"]=value;
this.RecreateChildControls();
}
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.RenderBeginTag(HtmlTextWriterTag.Tr);
output.AddStyleAttribute("text-align", "left");
output.RenderBeginTag(HtmlTextWriterTag.Td);
output.Write(" ");
lblMessage.RenderControl(output);
output.RenderEndTag();
output.AddStyleAttribute("text-align", "right");
output.RenderBeginTag(HtmlTextWriterTag.Td);
btnFirst.RenderControl(output);
output.Write(" ");
btnPrev.RenderControl(output);
output.Write(" ");
btnNext.RenderControl(output);
output.Write(" ");
btnLast.RenderControl(output);
output.Write("到");
output.AddStyleAttribute(HtmlTextWriterStyle.Width, "30px");
txtGoPage.RenderControl(output);
output.Write("页");
btnGo.RenderControl(output);
output.Write(" ");
output.RenderEndTag();
output.RenderEndTag();
}
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Table;
}
}
public event PageOnEventHandler RecPageChanged;
protected override bool OnBubbleEvent(object source, EventArgs args)
{
bool handled=false;
CommandEventArgs cea=args as CommandEventArgs;
if(cea==null)
{
return handled;
}
switch (cea.CommandName)
{
case "first":
handled=true;
CurPage=1;
break;
case "prev":
handled=true;
if (CurPage > 1)
{
CurPage--;
}
else
{
CurPage=1;
}
break;
case "next":
handled=true;
if (CurPage < PageCount)
{
CurPage ++ ;
}
else
{
CurPage=PageCount;
}
break;
case "last":
handled=true;
CurPage=PageCount;
break;
case "go":
string strGo=txtGoPage.Text.Trim();
int iGo;
if (!string.IsNullOrEmpty(strGo) && int.TryParse(strGo, out iGo))
{
handled=true;
CurPage=iGo;
}
break;
}
if (handled)
{
if (this.RecPageChanged !=null)
{
RecPageChanged(this, args);
this.RecreateChildControls();
}
return handled;
}
else
{
return base.OnBubbleEvent(source, args);
}
}
}
}
关于asp.net中使用自定义控件的方式实现一个分页控件的代码的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【asp】asp.net ubb使用代码-net-ubb使用
- 【默认图片】图片不存在使用默认图片代替的实例
- 【asp】asp.net 页面转向 Response.Redirect Ser
- 【页面打印】关于ASP.NET页面打印技术的常用方法
- 【MVC5】MVC 5 第一章 创建MVC 5 web应用程序-net
- 【MVC】一个简单MVC5 + EF6示例分享-EF6实例-MVC5
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
