Mail to Keith Dan
keith的天空
海阔凭鱼跃,天高任鸟飞

鉴于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"//存放当前页


其中包含属性:

public int RecordCount //总记录数
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();

        }


函数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;
        }


调用过程
只需要初始覆值 CutePager1.RecordCount  总记录数

回传事件中只需要重新帮定你的DataGrid等就行,
this.CutePager1.CurrentIndex为当前索引
CutePager1.PageViewCount为每页显示的记录数,

这里包含原文件和一个demo文件,大家有兴趣的朋友可以看看,大家互相学习
Demo   Source

posted on 2006-11-05 22:35  KeithDan  阅读(2618)  评论(9编辑  收藏  举报