在 Gridview 分页上添加“上一页,下一页,共X页”等信息

最近在做一个小项目的时候

 

用户提出Gridview 自带的分页不行,必须要有“上一页”,“下一页” 等按钮的要求

 

在网上搜了一些,感觉都属于那种“杀鸡用牛刀”的类型,

 

重写了很多的代码,感觉不是很爽,

 

于是自己摸索着,写了个比较简单的grivdview 分页,我个人觉得还是很好用的,效果图如下

 

-----------------------------------------------------

 

在 Gridview 分页上添加“上一页,下一页,共X页”等信息_第1张图片

 

-------------------------------------------------------------

 

原理比较简单,

 

就是利用GridView 在RowCreated事件上做个手脚,

 

当if (e.Row.RowType == DataControlRowType.Pager) 时

 

加入几个Button 和Label  之后再给他们写个事件就ok了

 

当然我觉得最有意思的就是最后的pager里面的对象嵌套。。。

 

拉出来一句

 

  e.Row.Controls[0].Controls[0].Controls[0].Controls[0].Controls.AddAt(0, (Button_IndexFirst));

 

其中各个对象的含义,这里只做个参考给大家

Pannel对象->Table对象->TableRow对象->TableCell对象    恩  貌似是这样的。

 

雕虫小技,以博众高手一笑

 

以下是代码

ContractedBlock.gif ExpandedBlockStart.gif Code
//注意:GridView 必须开启分页功能,并启用RowCreated 事件




protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
    
#region 翻页绑定
    
if (e.Row.RowType == DataControlRowType.Pager)
    {
        Label label_Index 
= new Label();
        LinkButton Button_IndexFirst 
= new LinkButton();
        LinkButton Button_IndexLast 
= new LinkButton();
        LinkButton Button_IndexNext 
= new LinkButton();
        LinkButton Button_IndexPrevious 
= new LinkButton();

        Button_IndexFirst.Text 
= "第一页 ";
        Button_IndexFirst.CommandName 
= "first";
        Button_IndexFirst.ForeColor 
= Color.White;
        Button_IndexFirst.Click 
+=new EventHandler(PageButtonClick);

        Button_IndexNext.Text 
= "  下一页 ";
        Button_IndexNext.CommandName 
= "next";
        Button_IndexNext.ForeColor 
= Color.White; 
            
        Button_IndexNext.Click 
+= new EventHandler(PageButtonClick);

        Button_IndexPrevious.Text 
= "前一页 ";
        Button_IndexPrevious.CommandName 
= "previous";
        Button_IndexPrevious.ForeColor 
= Color.White; 
        Button_IndexPrevious.Click 
+= new EventHandler(PageButtonClick);

        Button_IndexLast.Text 
= "最末页 ";
        Button_IndexLast.CommandName 
= "last";
        Button_IndexLast.ForeColor 
= Color.White; 
        Button_IndexLast.Click 
+= new EventHandler(PageButtonClick);
            
        label_Index.Text 
="当前为第" + (GridView1.PageIndex + 1+ "页,共有"+((GridView)sender).PageCount+"";
        e.Row.Controls[
0].Controls[0].Controls[0].Controls[0].Controls.AddAt(0, (Button_IndexFirst));
        e.Row.Controls[
0].Controls[0].Controls[0].Controls[0].Controls.AddAt(1, (Button_IndexPrevious));

        
int controlTmp = e.Row.Controls[0].Controls[0].Controls[0].Controls.Count-1;
        e.Row.Controls[
0].Controls[0].Controls[0].Controls[controlTmp].Controls.Add(Button_IndexNext);
        e.Row.Controls[
0].Controls[0].Controls[0].Controls[controlTmp].Controls.Add(Button_IndexLast);

        e.Row.Controls[
0].Controls[0].Controls[0].Controls[controlTmp].Controls.Add(label_Index);

        
//e.Row.Controls[0].Controls.Add(label_Index);
    }
    
#endregion
}


protected void PageButtonClick(object sender, EventArgs e)
{
    LinkButton clickedButton 
= ((LinkButton)sender);
    
if (clickedButton.CommandName == "first")
    {
        GridView1.PageIndex 
= 0;
    }
    
else if (clickedButton.CommandName == "next")
    {
        
if (GridView1.PageIndex < GridView1.PageCount - 1)
        {
            GridView1.PageIndex 
+= 1;
        }
    }
    
else if (clickedButton.CommandName == "previous")
    {
        
if (GridView1.PageIndex >= 1)
        {
            GridView1.PageIndex 
-= 1;
        }
    }
    
else if (clickedButton.CommandName == "last")
    {
        GridView1.PageIndex 
= GridView1.PageCount - 1;
    }
}

 

 

 

恩,说说问题吧,

 

从PageButtonClick事件里面充斥着GridView1就可以看出,如果有多个GridView 的话,

 

这个就是很抑郁的一件事,

 

本人小菜一个,没研究出来怎样让pagerButtonClick 判断出来是哪个GridView 点的button

 

这就是一个抑郁的遗憾。。。。。。

 

ok,期待博友的回复,先谢过了。

 

 

 

 

 

 

转载于:https://www.cnblogs.com/jicheng1014/archive/2008/08/30/1280112.html

你可能感兴趣的:(c#)