各位老大!我又来提问题了!我VS里使用DataGrid的属性生成器给DataGrid设定了自动分页的功能,但是执行的时候,我按DataGrid下面的分页按钮,DataGrid没有任何反应,依然是显示首页,请问这问题如何解决?谢谢!我用DataGrid的属性生成器给DataGrid设定了自动分页的功能后,在DataGrid的最底下就出现一些分页的符号:1、2、3
我如何加程序使得我能按那些符号按钮就可以达到翻页的功能?有位朋友给了我下面那段程序,我试了一下,的确可以激发1、2、3符号的事件,但是无法实现翻页功能,倒是把DataGrid弄不见了,请问应该如何修改程序?private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{

DataGrid1.CurrentPageIndex=e.NewPageIndex;
                           DataGrid1.DataBind();
                     }

解决方案 »

  1.   

    在datagrid绑定里还需要写代码,你把相关代码贴出来看看
      

  2.   

    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    少句柄了 重新生成这个DataGrid1_PageIndexChanged 事件 
    ===========================
    Private Sub dgOrder_PageIndexChanged(ByVal source As Object, 
        ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) 
    Handles dgOrder.PageIndexChanged
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  你少了这个
      

  3.   


    you need to reset the datasource tooDataGrid1.CurrentPageIndex=e.NewPageIndex;
    DataGrid1.DataSource=YourDataTable.DefaultView;
    DataGrid1.DataBind();
      

  4.   

    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {

    DataGrid1.CurrentPageIndex=e.NewPageIndex;
                               //中间还必须加上绑定数据源的代码!!!
                               DataGrid1.DataBind();
                         }
      

  5.   

    c#
    的句柄在
    private void InitializeComponent()
    {    
    this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
    this.Load += new System.EventHandler(this.Page_Load); }
      

  6.   

    Private Function GetDv(ByVal strSort As String) As DataView
            '定义数据库连接
            Dim dv As DataView
            Dim CN As New SqlConnection()
            Try
                '初始化连接字符串
                CN.ConnectionString = "data source=pmserver;
                initial catalog=Northwind;persist security info=False;user id=sa;Password=sa;"
                CN.Open()
    '从NorthWind得到orders表的数据
                Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from orders", CN)
                Dim ds As New DataSet()
                adp.Fill(ds)
                '得到数据视图
                dv = ds.Tables(0).DefaultView
            Catch ex As Exception
    #If DEBUG Then
                Session("Error") = ex.ToString()
                Response.Redirect("../error.aspx")        '跳转程序的公共错误处理页面
    #End If
            Finally
                '关闭连接
                CN.Close()
            End Try
            '排序
            dv.Sort = strSort
            Return dv
        End Function    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) 
        Handles MyBase.Load
            If Not IsPostBack Then
                ViewState("strSort") = "orderid"
                dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
                dgOrder.DataBind()
            End If
        End Sub
    '排序
        Private Sub dgOrder_SortCommand(ByVal source As Object, 
        ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles dgOrder.SortCommand
            dgOrder.CurrentPageIndex = 0
       '得到排序的列
            ViewState("strSort") = e.SortExpression.ToString()
            dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
            dgOrder.DataBind()
        End Sub '分页
        Private Sub dgOrder_PageIndexChanged(ByVal source As Object, 
        ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgOrder.PageIndexChanged
       '得到分页的页号
            dgOrder.CurrentPageIndex = e.NewPageIndex
            dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
            dgOrder.DataBind()
        End Sub 
      

  7.   

    我试了一下,提示错误:无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
      

  8.   

    我的CurrentPageIndex的值是1啊!怎么可能不是这个范围?我的程序是:
    Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
            DataGrid1.CurrentPageIndex = e.NewPageIndex
            DataGrid1.DataSource = Table2
            DataGrid1.DataBind()
            DataGrid1.Visible = True
        End SubTable2是我一个前面已经定义好的一个DataTable
      

  9.   

    TO: goody9807() dgOrder.DataSource = GetDv(ViewState("strSort").ToString())这句不是很明白,我是用VB写的,能解释一下这句话吗?
      

  10.   

    你查一下帮助嘛,那里有完整的例子,比你在论坛里看到的片断代码强多了,你有没有装msdn呀?
      

  11.   

    TO: goody9807() Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) 
        Handles MyBase.Load
            If Not IsPostBack Then
                ViewState("strSort") = "orderid"
                dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
                dgOrder.DataBind()
            End If
        End Sub
    不是很明白啊!各个变量代表的是什么啊?
      

  12.   

    Imports SystemImports System.Data.SqlClient
    Public Class sfcx
        Inherits System.Web.UI.Page
        Dim Sqlcnn As SqlConnection
        Dim Table2 As New DataTable#Region " Web 窗体设计器生成的代码 "    '该调用是 Web 窗体设计器所必需的。
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub
        Protected WithEvents Label1 As System.Web.UI.WebControls.Label
        Protected WithEvents Label3 As System.Web.UI.WebControls.Label
        Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList
        Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
        Protected WithEvents Button1 As System.Web.UI.WebControls.Button
        Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
        Protected WithEvents DataGrid2 As System.Web.UI.WebControls.DataGrid
        Protected WithEvents Panel1 As System.Web.UI.WebControls.Panel
        Protected WithEvents Label41 As System.Web.UI.WebControls.Label
        Protected WithEvents Label40 As System.Web.UI.WebControls.Label
        Protected WithEvents Label39 As System.Web.UI.WebControls.Label
        Protected WithEvents Label38 As System.Web.UI.WebControls.Label
        Protected WithEvents Label37 As System.Web.UI.WebControls.Label
        Protected WithEvents Label36 As System.Web.UI.WebControls.Label
        Protected WithEvents Label35 As System.Web.UI.WebControls.Label
        Protected WithEvents Label34 As System.Web.UI.WebControls.Label
        Protected WithEvents Label33 As System.Web.UI.WebControls.Label
        Protected WithEvents Label32 As System.Web.UI.WebControls.Label
        Protected WithEvents Label31 As System.Web.UI.WebControls.Label
        Protected WithEvents Label30 As System.Web.UI.WebControls.Label
        Protected WithEvents Label29 As System.Web.UI.WebControls.Label
        Protected WithEvents Label28 As System.Web.UI.WebControls.Label
        Protected WithEvents Label27 As System.Web.UI.WebControls.Label
        Protected WithEvents Label26 As System.Web.UI.WebControls.Label
        Protected WithEvents Label25 As System.Web.UI.WebControls.Label
        Protected WithEvents Label24 As System.Web.UI.WebControls.Label
        Protected WithEvents Label23 As System.Web.UI.WebControls.Label
        Protected WithEvents Label22 As System.Web.UI.WebControls.Label
        Protected WithEvents Label21 As System.Web.UI.WebControls.Label
        Protected WithEvents Label20 As System.Web.UI.WebControls.Label
        Protected WithEvents Label19 As System.Web.UI.WebControls.Label
        Protected WithEvents Label18 As System.Web.UI.WebControls.Label
        Protected WithEvents Label17 As System.Web.UI.WebControls.Label
        Protected WithEvents Label16 As System.Web.UI.WebControls.Label
        Protected WithEvents Label15 As System.Web.UI.WebControls.Label
        Protected WithEvents Label14 As System.Web.UI.WebControls.Label
        Protected WithEvents Label13 As System.Web.UI.WebControls.Label
        Protected WithEvents Label12 As System.Web.UI.WebControls.Label
        Protected WithEvents Label11 As System.Web.UI.WebControls.Label
        Protected WithEvents Label10 As System.Web.UI.WebControls.Label
        Protected WithEvents Label9 As System.Web.UI.WebControls.Label
        Protected WithEvents Label8 As System.Web.UI.WebControls.Label
        Protected WithEvents Label7 As System.Web.UI.WebControls.Label
        Protected WithEvents Label6 As System.Web.UI.WebControls.Label
        Protected WithEvents Label5 As System.Web.UI.WebControls.Label
        Protected WithEvents Label4 As System.Web.UI.WebControls.Label    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
        '不要删除或移动它。
        Private designerPlaceholderDeclaration As System.Object    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
            '不要使用代码编辑器修改它。
            InitializeComponent()
        End Sub#End Region    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            Sqlcnn = New SqlClient.SqlConnection
            Sqlcnn.ConnectionString = "workstation id=WIN2003;packet size=4096;user id=sa;Pwd=123456789;data source=""192.168.0.2"";pers" & _
                                          "ist security info=False;initial catalog=sfxtdb"
            Sqlcnn.Open()
        End Sub
      

  13.   


          
            Label41.Text = IIf(IsDBNull(Table1.Rows(0).Item(37)), "", Table1.Rows(0).Item(37))
            DataGrid1.Visible = False
            DataGrid2.Visible = True
            Panel1.Visible = True
               End Sub    Private Sub DataGrid2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid2.SelectedIndexChanged
            Panel1.Visible = True
            Dim bh As Integer = DataGrid2.SelectedItem.Cells(1).Text
            Dim SqlDa As New SqlClient.SqlDataAdapter("select *  from tbYH where 用户编号=" & bh & "", Sqlcnn)
            Dim dt As New DataSet
            SqlDa.Fill(dt, "tbYH")
            Dim Table As New DataTable
            Table = dt.Tables(0)
            
            Dim ny As Integer = DataGrid2.SelectedItem.Cells(2).Text
            Dim SqlDa1 As New SqlClient.SqlDataAdapter("select 用户名称,用户地址,用户编号,托收编号,水价,上月行度,上月水量,换表行度,本月行度,本月用水,平均水量,退补水量,收费水量,本月水费,水费欠费,滞纳金,本月卫生费,本月治安费,本月污水费,卫生费欠费,治安费欠费,污水费欠费,实收金额,抄表标志,异常标志,水费收费标志,卫生费收费标志,治安费收费标志,污水费收费标志,开票标志,发票编号,开票日期,收费日期,滞纳金日期,抄表日期,银行反馈,收费员,备注  from VW_yh where 用户编号=" & bh & " and 收费年月=" & ny & "", Sqlcnn)
            Dim dt1 As New DataSet
            SqlDa1.Fill(dt1, "VW_yh")
            Dim Table1 As New DataTable
            Table1 = dt1.Tables(0)
            Label4.Text = IIf(IsDBNull(Table1.Rows(0).Item(0)), "", Table1.Rows(0).Item(0))
            Label5.Text = IIf(IsDBNull(Table1.Rows(0).Item(1)), "", Table1.Rows(0).Item(1))
            Label6.Text = IIf(IsDBNull(Table1.Rows(0).Item(2)), "", Table1.Rows(0).Item(2))
            Label7.Text = IIf(IsDBNull(Table1.Rows(0).Item(3)), "", Table1.Rows(0).Item(3))
            Label8.Text = IIf(IsDBNull(Table1.Rows(0).Item(4)), "", Table1.Rows(0).Item(4))
            Label9.Text = IIf(IsDBNull(Table1.Rows(0).Item(5)), "", Table1.Rows(0).Item(5))
            Label10.Text = IIf(IsDBNull(Table1.Rows(0).Item(6)), "", Table1.Rows(0).Item(6))
            Label11.Text = IIf(IsDBNull(Table1.Rows(0).Item(7)), "", Table1.Rows(0).Item(7))
            Label12.Text = IIf(IsDBNull(Table1.Rows(0).Item(8)), "", Table1.Rows(0).Item(8))
            Label13.Text = IIf(IsDBNull(Table1.Rows(0).Item(9)), "", Table1.Rows(0).Item(9))
            Label14.Text = IIf(IsDBNull(Table1.Rows(0).Item(10)), "", Table1.Rows(0).Item(10))
            Label15.Text = IIf(IsDBNull(Table1.Rows(0).Item(11)), "", Table1.Rows(0).Item(11))
            Label16.Text = IIf(IsDBNull(Table1.Rows(0).Item(12)), "", Table1.Rows(0).Item(12))
            Label17.Text = IIf(IsDBNull(Table1.Rows(0).Item(13)), "", Table1.Rows(0).Item(13))
            Label18.Text = IIf(IsDBNull(Table1.Rows(0).Item(14)), "", Table1.Rows(0).Item(14))
            Label19.Text = IIf(IsDBNull(Table1.Rows(0).Item(15)), "", Table1.Rows(0).Item(15))
            Label20.Text = IIf(IsDBNull(Table1.Rows(0).Item(16)), "", Table1.Rows(0).Item(16))
            Label21.Text = IIf(IsDBNull(Table1.Rows(0).Item(17)), "", Table1.Rows(0).Item(17))
            Label22.Text = IIf(IsDBNull(Table1.Rows(0).Item(18)), "", Table1.Rows(0).Item(18))
            Label23.Text = IIf(IsDBNull(Table1.Rows(0).Item(19)), "", Table1.Rows(0).Item(19))
            Label24.Text = IIf(IsDBNull(Table1.Rows(0).Item(20)), "", Table1.Rows(0).Item(20))
            Label25.Text = IIf(IsDBNull(Table1.Rows(0).Item(21)), "", Table1.Rows(0).Item(21))
            Label26.Text = IIf(IsDBNull(Table1.Rows(0).Item(22)), "", Table1.Rows(0).Item(22))
            Label27.Text = IIf(IsDBNull(Table1.Rows(0).Item(23)), "", Table1.Rows(0).Item(23))
            Label28.Text = IIf(IsDBNull(Table1.Rows(0).Item(24)), "", Table1.Rows(0).Item(24))
            Label29.Text = IIf(IsDBNull(Table1.Rows(0).Item(25)), "", Table1.Rows(0).Item(25))
            Label30.Text = IIf(IsDBNull(Table1.Rows(0).Item(26)), "", Table1.Rows(0).Item(26))
            Label31.Text = IIf(IsDBNull(Table1.Rows(0).Item(27)), "", Table1.Rows(0).Item(27))
            Label32.Text = IIf(IsDBNull(Table1.Rows(0).Item(28)), "", Table1.Rows(0).Item(28))
            Label33.Text = IIf(IsDBNull(Table1.Rows(0).Item(29)), "", Table1.Rows(0).Item(29))
            Label34.Text = IIf(IsDBNull(Table1.Rows(0).Item(30)), "", Table1.Rows(0).Item(30))
            Label35.Text = IIf(IsDBNull(Table1.Rows(0).Item(31)), "", Table1.Rows(0).Item(31))
            Label36.Text = IIf(IsDBNull(Table1.Rows(0).Item(32)), "", Table1.Rows(0).Item(32))
            Label37.Text = IIf(IsDBNull(Table1.Rows(0).Item(33)), "", Table1.Rows(0).Item(33))
            Label38.Text = IIf(IsDBNull(Table1.Rows(0).Item(34)), "", Table1.Rows(0).Item(34))
            Label39.Text = IIf(IsDBNull(Table1.Rows(0).Item(35)), "", Table1.Rows(0).Item(35))
            Label40.Text = IIf(IsDBNull(Table1.Rows(0).Item(36)), "", Table1.Rows(0).Item(36))
            Label41.Text = IIf(IsDBNull(Table1.Rows(0).Item(37)), "", Table1.Rows(0).Item(37))
        End Sub    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)    End Sub    Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
            DataGrid1.CurrentPageIndex = e.NewPageIndex
            DataGrid1.DataSource = Table2
            DataGrid1.DataBind()
            DataGrid1.Visible = True
        End Sub
    End Class
      

  14.   

    事件发生后,你的Table2变量已经丢失参数了吧,所以你分页的时候,这个Table2已经是null,以至出现------------无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
    这样的错误,所以问题要解决,你就必须绑定DataGrid以前,再运行一次绑定数据源的函数。
      

  15.   

    Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged        DataGrid1.CurrentPageIndex = e.NewPageIndex
            DataTable dt = (DataTable)DataGrid1.DataSource;
    DataGrid1.DataSource = dt;
    DataGrid1.DataBind();这样应该可以了啊,我已经绑你测试好了,思想就是,把DataGrid1中的数据拿出来,放到DataTable中,然后DataGrid1再次调用这个Table,这样就可以了。
    不过有一点需要注意的就是,你这里绑定数据的时候用的是DataTable,
    如果是DataView,就必须这样用:                       
                                DataSet ds = new DataSet();
    ds = ((DataView)DataGrid1.DataSource).Table.DataSet;
    DataGrid1.DataSource = ds.Tables[0].DefaultView;
    如果是DatSet,则必须这样用:
                               DataSet ds= (DataSet)DataGrid1.DataSource;
                               ----------
    基本就是这么写的!!楼主测试好了,就给分啊——!!!!!
      

  16.   

    直接在PageIndexChanged里填上你的程序就可以了吗?不用在前面再设置吗?DataTable dt = (DataTable)DataGrid1.DataSource
            DataGrid1.DataSource = dt
    这两句有错误啊!
      

  17.   

    TO:zhrenxi(柯希)老大!你怎么还不来啊!小弟我搞不定啊!