这是其中一段程序,帮帮忙看看是哪出的问题
'定义一个方法,外部调用时点击DataGrid翻页时出错
Public Sub MainDetailDataBind(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim myDS As New DataSet()
myDS = CreateDataSource(ConStr, MainSqlStr)
MainDataGrid.DataSource = myDS.Tables("table").DefaultView
BindDataGrid(MainDataGrid, MainColumnName, MainTitleName, True) '绑定主表
MainDataGrid.Visible = True
End Sub
'使用Page_Load正常
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
Dim myDS As New DataSet()
myDS = CreateDataSource(ConStr, MainSqlStr)
If IsNothing(myDS) Then Exit Sub
MainDataGrid.DataSource = myDS.Tables("table").DefaultView
BindDataGrid(MainDataGrid, MainColumnName, MainTitleName, True) '绑定主表
MainDataGrid.Visible = False
End Sub '根据传过来的SQL创建数据源
Private Function CreateDataSource(ByVal strConnect As String, ByVal strSql As String) As DataSet
Dim objDataSet As New DataSet()
Dim objConnect As New OleDbConnection(strConnect)
Dim objDataAdapter As New OleDbDataAdapter()
Dim objCommand As New OleDbCommand()
objDataAdapter.SelectCommand = objCommand
objCommand.Connection = objConnect
objCommand.CommandType = CommandType.Text
objCommand.CommandText = strSql
objDataAdapter.Fill(objDataSet, "Table")
Return objDataSet
End Function '数据绑定
Private Sub BindDataGrid(ByVal objDataGrid As DataGrid, ByVal ColumnName As String, ByVal TitleName As String, ByVal is_MainTable As Boolean)
Dim _ColName() As String = Split(ColumnName, ",") '定义数组保存各列名
Dim _ColTitle() As String = Split(TitleName, ",") '定义数组保存各列标题头
Dim i As Integer
Dim j As Integer = _ColName.Length
'循环取出各字段值和标题头
For i = 0 To j - 1
Dim dyn_col As BoundColumn = New BoundColumn()
dyn_col.DataField = _ColName(i)
dyn_col.HeaderText = _ColTitle(i)
dyn_col.SortExpression = _ColName(i)
dyn_col.ItemStyle.Wrap = False
objDataGrid.Columns.AddAt(i, dyn_col)
Next
If is_MainTable Then
'定义一个查询按钮从表情况
Dim col_detail As New ButtonColumn()
col_detail.Text = "选择"
col_detail.CommandName = "select"
col_detail.ItemStyle.Wrap = False
objDataGrid.Columns.AddAt(j, col_detail)
End If
objDataGrid.DataBind()
'初始化显示的页数
tb_page.Text = MainDataGrid.CurrentPageIndex + 1
Label1.Text = MainDataGrid.CurrentPageIndex * MainDataGrid.PageSize + 1
Label2.Text = MainDataGrid.CurrentPageIndex * MainDataGrid.PageSize + MainDataGrid.Items.Count
End Sub
'主表自定义翻页
Public Sub lb_page_Click(ByVal sender As Object, ByVal e As EventArgs)
Select Case CType(sender, LinkButton).CommandArgument
Case "lb_first"
MainDataGrid.CurrentPageIndex = 0
Case "lb_pre"
If MainDataGrid.CurrentPageIndex > 0 Then
MainDataGrid.CurrentPageIndex = MainDataGrid.CurrentPageIndex - 1
End If
Case "lb_next"
If MainDataGrid.CurrentPageIndex < (MainDataGrid.PageCount - 1) Then
MainDataGrid.CurrentPageIndex = MainDataGrid.CurrentPageIndex + 1
End If
Case "lb_last"
MainDataGrid.CurrentPageIndex = MainDataGrid.PageCount - 1
End Select
tb_page.Text = MainDataGrid.CurrentPageIndex + 1
MainDataGrid.DataBind()
UpdateDetailGrid()
End Sub
'定义一个方法,外部调用时点击DataGrid翻页时出错
Public Sub MainDetailDataBind(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim myDS As New DataSet()
myDS = CreateDataSource(ConStr, MainSqlStr)
MainDataGrid.DataSource = myDS.Tables("table").DefaultView
BindDataGrid(MainDataGrid, MainColumnName, MainTitleName, True) '绑定主表
MainDataGrid.Visible = True
End Sub
'使用Page_Load正常
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
Dim myDS As New DataSet()
myDS = CreateDataSource(ConStr, MainSqlStr)
If IsNothing(myDS) Then Exit Sub
MainDataGrid.DataSource = myDS.Tables("table").DefaultView
BindDataGrid(MainDataGrid, MainColumnName, MainTitleName, True) '绑定主表
MainDataGrid.Visible = False
End Sub '根据传过来的SQL创建数据源
Private Function CreateDataSource(ByVal strConnect As String, ByVal strSql As String) As DataSet
Dim objDataSet As New DataSet()
Dim objConnect As New OleDbConnection(strConnect)
Dim objDataAdapter As New OleDbDataAdapter()
Dim objCommand As New OleDbCommand()
objDataAdapter.SelectCommand = objCommand
objCommand.Connection = objConnect
objCommand.CommandType = CommandType.Text
objCommand.CommandText = strSql
objDataAdapter.Fill(objDataSet, "Table")
Return objDataSet
End Function '数据绑定
Private Sub BindDataGrid(ByVal objDataGrid As DataGrid, ByVal ColumnName As String, ByVal TitleName As String, ByVal is_MainTable As Boolean)
Dim _ColName() As String = Split(ColumnName, ",") '定义数组保存各列名
Dim _ColTitle() As String = Split(TitleName, ",") '定义数组保存各列标题头
Dim i As Integer
Dim j As Integer = _ColName.Length
'循环取出各字段值和标题头
For i = 0 To j - 1
Dim dyn_col As BoundColumn = New BoundColumn()
dyn_col.DataField = _ColName(i)
dyn_col.HeaderText = _ColTitle(i)
dyn_col.SortExpression = _ColName(i)
dyn_col.ItemStyle.Wrap = False
objDataGrid.Columns.AddAt(i, dyn_col)
Next
If is_MainTable Then
'定义一个查询按钮从表情况
Dim col_detail As New ButtonColumn()
col_detail.Text = "选择"
col_detail.CommandName = "select"
col_detail.ItemStyle.Wrap = False
objDataGrid.Columns.AddAt(j, col_detail)
End If
objDataGrid.DataBind()
'初始化显示的页数
tb_page.Text = MainDataGrid.CurrentPageIndex + 1
Label1.Text = MainDataGrid.CurrentPageIndex * MainDataGrid.PageSize + 1
Label2.Text = MainDataGrid.CurrentPageIndex * MainDataGrid.PageSize + MainDataGrid.Items.Count
End Sub
'主表自定义翻页
Public Sub lb_page_Click(ByVal sender As Object, ByVal e As EventArgs)
Select Case CType(sender, LinkButton).CommandArgument
Case "lb_first"
MainDataGrid.CurrentPageIndex = 0
Case "lb_pre"
If MainDataGrid.CurrentPageIndex > 0 Then
MainDataGrid.CurrentPageIndex = MainDataGrid.CurrentPageIndex - 1
End If
Case "lb_next"
If MainDataGrid.CurrentPageIndex < (MainDataGrid.PageCount - 1) Then
MainDataGrid.CurrentPageIndex = MainDataGrid.CurrentPageIndex + 1
End If
Case "lb_last"
MainDataGrid.CurrentPageIndex = MainDataGrid.PageCount - 1
End Select
tb_page.Text = MainDataGrid.CurrentPageIndex + 1
MainDataGrid.DataBind()
UpdateDetailGrid()
End Sub
Public Sub MainDetailDataBind()
Dim myDS As New DataSet()
myDS = CreateDataSource(ConStr, MainSqlStr)
MainDataGrid.DataSource = myDS.Tables("table").DefaultView
BindDataGrid(MainDataGrid, MainColumnName, MainTitleName, True) '绑定主表
MainDataGrid.Visible = True
End Sub
但是在lb_page_Click函数中又没改过来,当然就看不见了。
MainDataGrid.DataBind()前,应该对MainDataGrid.DataSource赋值。
??????
??????
??????
??????