给你提一段完整代码:
<asp:datagrid id="GridUser" Font-Size="9pt" Font-Names="宋体" GridLines="None" CellPadding="1" BackColor="White" CellSpacing="1" BorderWidth="1px" CssClass="grid" BorderColor="#336699" Width="100%" AutoGenerateColumns="False" HorizontalAlign="Left" AllowPaging="True" Runat="server" PageSize="16">
.....</asp:datagrid>以下Vb代码:
    '处理grid自带的跳页
    Private Sub GridUser_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles GridUser.PageIndexChanged
        Dim DsSource As DataView = MDset.Tables(0).DefaultView
        GridUser.DataSource = DsSource
        GridUser.CurrentPageIndex = e.NewPageIndex
        MPageCurr = e.NewPageIndex
        GridUser.DataBind()
    End Sub    '增加grid中页导航项的内容
    Private Sub GridUser_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles GridUser.ItemCreated
        If e.Item.ItemType = System.Web.UI.WebControls.ListItemType.Pager Then
            Dim lblCount As New Label()
            lblCount.Text = "总笔数:" & MRowCount & "笔" & "    (共" & GridUser.PageCount & "页, 当前第" & MPageCurr + 1 & "页)  "
            e.Item.Cells(0).Controls.AddAt(0, lblCount)            Dim lblSep1 As New Label()
            lblSep1.Text = ""
            lblSep1.Width = Unit.Pixel(8)
            e.Item.Cells(0).Controls.AddAt(1, lblSep1)            Dim BtnPre As New LinkButton()
            BtnPre.Text = "首页"
            BtnPre.CommandName = "Previous"
            e.Item.Cells(0).Controls.AddAt(1, BtnPre)            Dim lblSep2 As New Label()
            lblSep2.Text = ""
            lblSep2.Width = Unit.Pixel(8)
            e.Item.Cells(0).Controls.Add(lblSep2)            Dim BtnEnd As New LinkButton()
            BtnEnd.Text = "尾页"
            BtnEnd.CommandName = "End"
            e.Item.Cells(0).Controls.Add(BtnEnd)
            AddHandler BtnPre.Click, AddressOf SubGridPage
            AddHandler BtnEnd.Click, AddressOf SubGridPage            If GridUser.CurrentPageIndex = 0 Then
                BtnPre.Enabled = False
            End If            If GridUser.CurrentPageIndex = GridUser.PageCount - 1 Then
                BtnEnd.Enabled = False
            End If
        End If
    End Sub    '处理跳页点击事件
    Sub SubGridPage(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim DsSource As DataView = MDset.Tables(0).DefaultView
        GridUser.DataSource = DsSource
        GridUser.DataBind()        Dim btnSender As LinkButton
        btnSender = CType(sender, LinkButton)
        If (btnSender.CommandName = "Previous" And GridUser.CurrentPageIndex > 0) Then
            GridUser.CurrentPageIndex = 0
            MPageCurr = 0
            GridUser.DataBind()
        Else
            If btnSender.CommandName = "End" And GridUser.CurrentPageIndex <= GridUser.PageCount - 1 Then
                GridUser.CurrentPageIndex = GridUser.PageCount - 1
                MPageCurr = GridUser.PageCount - 1
                GridUser.DataBind()
            End If
        End If
    End Sub

解决方案 »

  1.   

    还有bind时候加上:
            ......
            MRowCount = MDset.Tables(0).Rows.Count
            MPageCount = CInt(MRowCount / GridUser.PageSize)
            If (GridUser.CurrentPageIndex > (MPageCount - 1)) Or (GridUser.CurrentPageIndex < 0) Then
                GridUser.CurrentPageIndex = 0
            End If
            MPageCurr = GridUser.CurrentPageIndex
            ......
            GridUser.DataSource = MDset.Tables(0).DefaultView
            GridUser.DataBind()
      

  2.   

    不是啊,
    我在DataGrid裡加了 OnPageIndexChanged="Grid_Change"
    然後在aspx.cs中寫了寫了
    void Grid_Change(Object sender, DataGridPageChangedEventArgs e) 
    {
    // Set CurrentPageIndex to the page the user clicked.
    ItemsGrid.CurrentPageIndex = e.NewPageIndex;
    // Rebind the data. 
    ItemsGrid.DataSource = CreateDataSource();
    ItemsGrid.DataBind();
     }
    運行時就出錯了:
    Compiler Error Message: CS0122: 'bps.ccc.DataGrid1_PageIndexChanged(object, System.Web.UI.WebControls.DataGridPageChangedEventArgs)' is inaccessible due to its protection level請問這個是怎麼回事,是不是與設置這些有關系?
      

  3.   

    void Grid_Change 前面加上 Public??