鉴于datagrid的分页非常垃圾,我就自己做了一个翻页控件
有些朋友对web控件编写还不是非常熟悉,呵呵,我看到很多朋友在询问包括回传事件等等,我在这里讲解一些(高手跳过)
其中控件要实现回传,我继承IPostBackEventHandler接口,在成员函数RaisePostBackEvent(string eventArgument)中实现对当前页的存放.设置Onclick为回传,需要用到Page.GetPostBackEventReference 方法,其中GetPostBackEventReference ( System.Web.UI.Control control , System.String argument )包含两个参数,第一个表示实现回传的控件,第2个表示回传值,这个值也就是我们成员函数RaisePostBackEvent获取到的值.在这里,我是把当前页索引作为回传值的,在成员函数中显现对viewstate的副职
其中包括两个viewstate,分别保存总记录数和当前页索引
ViewState["RecordCount"] //存放总记录
ViewState["page"] //存放当前页
ViewState["page"] //存放当前页
其中包含属性:
public int RecordCount //总记录数
public int CurrentIndex //当前页数
public int PageCount //总页数
public int PageViewCount //每页显示的记录数
public string Style //样式
public string Info //显示的文字
public int CurrentIndex //当前页数
public int PageCount //总页数
public int PageViewCount //每页显示的记录数
public string Style //样式
public string Info //显示的文字
重写了Render方法
protected override void Render(HtmlTextWriter htw)
{
htw.AddAttribute(HtmlTextWriterAttribute.Border, "0");
htw.AddAttribute(HtmlTextWriterAttribute.Class, "PagerContainerTable");
htw.RenderBeginTag(HtmlTextWriterTag.Table);
htw.RenderBeginTag(HtmlTextWriterTag.Tr);
RenderFirst(htw);//首页
RenderPrev(htw);//上一页
RenderCurrent(htw);//索引页
RenderNext(htw);//下一页
RenderLast(htw);//尾页
RanderGoto(htw);//跳到
RenderInfo(htw);//显示的文字
htw.RenderEndTag();
htw.RenderEndTag();
}
{
htw.AddAttribute(HtmlTextWriterAttribute.Border, "0");
htw.AddAttribute(HtmlTextWriterAttribute.Class, "PagerContainerTable");
htw.RenderBeginTag(HtmlTextWriterTag.Table);
htw.RenderBeginTag(HtmlTextWriterTag.Tr);
RenderFirst(htw);//首页
RenderPrev(htw);//上一页
RenderCurrent(htw);//索引页
RenderNext(htw);//下一页
RenderLast(htw);//尾页
RanderGoto(htw);//跳到
RenderInfo(htw);//显示的文字
htw.RenderEndTag();
htw.RenderEndTag();
}
函数GetInt为从总记录数计算页数
private int GetInt(int Value,int PasvValue)
{
try
{
int newValue = Value/PasvValue;
int tmp = Value%PasvValue;
if(tmp>0)
{
newValue ++ ;
}
return newValue;
}
catch
{}
return -1;
}
{
try
{
int newValue = Value/PasvValue;
int tmp = Value%PasvValue;
if(tmp>0)
{
newValue ++ ;
}
return newValue;
}
catch
{}
return -1;
}
调用过程
只需要初始覆值 CutePager1.RecordCount 总记录数
回传事件中只需要重新帮定你的DataGrid等就行,
this.CutePager1.CurrentIndex为当前索引
CutePager1.PageViewCount为每页显示的记录数,
这里包含原文件和一个demo文件,大家有兴趣的朋友可以看看,大家互相学习
Demo Source