GridView 分页

来源:互联网 发布:双十一淘宝真的便宜吗 编辑:程序博客网 时间:2024/05/07 11:01

 

原理比较简单,

 

就是利用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对象    恩 貌似是这样的。

 

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

 

以下是代码


//注意:GridView 必须开启分页功能,并启用RowCreated 事件


C#

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

 

VB.NET

#Region "翻页绑定"

        Private Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated

            If e.Row.RowType = DataControlRowType.Pager Then
                Dim label_Index As New Label()
                Dim Button_IndexFirst As New LinkButton()
                Dim Button_IndexLast As New LinkButton()
                Dim Button_IndexNext As New LinkButton()
                Dim Button_IndexPrevious As New LinkButton()

                Button_IndexFirst.Text = "第一页 "
                Button_IndexFirst.CommandName = "first"
                Button_IndexFirst.ForeColor = Color.White
                '    Button_IndexFirst.e += New EventHandler(PageButtonClick)
                AddHandler Button_IndexFirst.Click, AddressOf PageButtonClick


                Button_IndexNext.Text = " 下一页 "
                Button_IndexNext.CommandName = "next"
                Button_IndexNext.ForeColor = Color.White

                ' Button_IndexNext.Click += New EventHandler(AddressOf PageButtonClick)
                AddHandler Button_IndexNext.Click, AddressOf PageButtonClick

                Button_IndexPrevious.Text = "前一页 "
                Button_IndexPrevious.CommandName = "previous"
                Button_IndexPrevious.ForeColor = Color.White
                '   Button_IndexPrevious.Click += New EventHandler(AddressOf PageButtonClick)
                AddHandler Button_IndexPrevious.Click, AddressOf PageButtonClick

                Button_IndexLast.Text = "最末页 "
                Button_IndexLast.CommandName = "last"
                Button_IndexLast.ForeColor = Color.White
                ' Button_IndexLast.Click += New EventHandler(AddressOf PageButtonClick)
                AddHandler Button_IndexLast.Click, AddressOf PageButtonClick

                label_Index.Text = ("当前为第" & (GridView1.PageIndex + 1) & "页,共有") + DirectCast(sender, GridView).PageCount.ToString & "页"
                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))

                Dim controlTmp As Integer = 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.Add(label_Index);
                e.Row.Controls(0).Controls(0).Controls(0).Controls(controlTmp).Controls.Add(label_Index)
            End If

        End Sub
#End Region

        Protected Sub PageButtonClick(ByVal sender As Object, ByVal e As EventArgs)
            Dim clickedButton As LinkButton = DirectCast(sender, LinkButton)
            If clickedButton.CommandName = "first" Then
                GridView1.PageIndex = 0
            ElseIf clickedButton.CommandName = "next" Then
                If GridView1.PageIndex < GridView1.PageCount - 1 Then
                    GridView1.PageIndex += 1
                End If
            ElseIf clickedButton.CommandName = "previous" Then
                If GridView1.PageIndex >= 1 Then
                    GridView1.PageIndex -= 1
                End If
            ElseIf clickedButton.CommandName = "last" Then
                GridView1.PageIndex = GridView1.PageCount - 1
            End If
        End Sub

原创粉丝点击