Dim dtConn As OleDb.OleDbConnection
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       
        '在此处放置初始化页的用户代码        dtConn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("JC.mdb"))
        If Not IsPostBack Then
            bindgrid(True)        End If
    End Sub
    Sub bindgrid()
        
            Dim dtset As DataSet
            Dim dtCmd As OleDb.OleDbDataAdapter
            Dim ssql As String
            ssql = "select ygid,xm from JC_员工信息表"
            dtConn.Open()
            dtCmd = New OleDb.OleDbDataAdapter(ssql, dtConn)
            dtset = New DataSet()
            dtCmd.Fill(dtset)
            
            DataGrid1.DataSource = dtset.Tables(0).DefaultView
            DataGrid1.DataBind()
    
           
            dtConn.Close()
       
    End Sub
    Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
        DataGrid1.EditItemIndex = -1
        bindgrid()
    End Sub    Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
        DataGrid1.EditItemIndex = e.Item.ItemIndex
        bindgrid()
    End Sub    Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
        Dim dtset As DataSet
        Dim dtCmd As OleDb.OleDbDataAdapter
        Dim tbx1, tbx2 As TextBox
        tbx1 = e.Item.Cells(0).Controls(0)
        tbx2 = e.Item.Cells(1).Controls(0)
        Dim dtstr As String
        dtstr = "update JC_员工信息表 set ygid='" & tbx1.Text & "',xm='" & tbx2.Text & "' where ygid='" & tbx1.Text & "'"
        dtCmd = New OleDb.OleDbDataAdapter(dtstr, dtConn)
        dtConn.Open()
        dtCmd.SelectCommand.ExecuteNonQuery()
        dtConn.Close()
        DataGrid1.EditItemIndex = -1
        bindgrid()    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
        bindgrid()
    End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dtCmd As OleDb.OleDbDataAdapter
        Dim str As String
        Dim dtset As DataSet
        Select Case DropDownList1.SelectedIndex
            Case 0
                str = "select ygid,xm from JC_员工信息表 where xm like '" & TextBox1.Text & "'"
                dtCmd = New OleDb.OleDbDataAdapter(str, dtConn)
                dtConn.Open()
                dtCmd.SelectCommand.ExecuteNonQuery()
                dtset = New DataSet()
                dtCmd.Fill(dtset)
                DataGrid1.DataSource = dtset.Tables(0).DefaultView
                DataGrid1.DataBind()
                dtConn.Close()
            Case 1
                str = "select ygid,xm from JC_员工信息表 where ygid like '" & TextBox1.Text & "'"
                dtCmd = New OleDb.OleDbDataAdapter(str, dtConn)
                dtConn.Open()
                dtCmd.SelectCommand.ExecuteNonQuery()
                dtset = New DataSet()
                dtCmd.Fill(dtset)
                DataGrid1.DataSource = dtset.Tables(0).DefaultView
                DataGrid1.DataBind()
                dtConn.Close()        End Select
        
    End Sub
End Class

解决方案 »

  1.   

    你的错误我觉得应该是IsPostback的原因,想想程序运行的顺序先,如果在翻页后是否还能正常运行你的检索程序。
      

  2.   

    用ViewState 保存分页的信息了吗?提交时分页信息会丢失的
      

  3.   

    应该是你的DataGrid的CurrentPageIndex越界了,一般在改变查询条件或删除一些行的时候会出现这种情况。比如你第一次查询的结果总共是3页,你翻到最后一页(这时的CurrentPageIndex应该为2),改变查询条件再次查询,而这次的查询结果总共只有2页,即CurrentPageIndex的值只能为0或1,而实际上CurrentPageIndex的当前值为2,所以当你绑定的时候就会出错。在绑定之前你应该检查一下。