Vb.net Datagridview首次在tabpage中不显示数据

Vb.net Datagridview首次在tabpage中不显示数据,vb.net,datagridview,tabcontrol,tabpage,Vb.net,Datagridview,Tabcontrol,Tabpage,我在tabpage2中有一个datagridview,我有一个搜索按钮tabpage1来填充datagridview。当我搜索并单击显示空行的tabpage2 datagridview时,我返回到tabpage1并再次单击搜索,然后转到显示数据的tabpage2 datagridview,为什么会发生这种情况 Dim daPA As New OracleDataAdapter Dim dtPA As New DataTable() Dim cmd As New OracleCommand("s

我在tabpage2中有一个datagridview,我有一个搜索按钮tabpage1来填充datagridview。当我搜索并单击显示空行的tabpage2 datagridview时,我返回到tabpage1并再次单击搜索,然后转到显示数据的tabpage2 datagridview,为什么会发生这种情况

Dim daPA As New OracleDataAdapter
Dim dtPA As New DataTable()

Dim cmd As New OracleCommand("select * from POLICY_SUBAGENT_DETAIL where POLICY_REFER =:Vno", sgcnn)
cmd.Parameters.Add("@Vno", OracleDbType.NVarchar2).Value = TxtPolicyRefer.Text.ToString.Trim

dtPA.Clear()
daPA = New OracleDataAdapter(cmd)
daPA.Fill(dtPA)
DgvSubAgent.AutoGenerateColumns = False
DgvSubAgent.DataSource = dtPA

If dtPA.Rows.Count > 0 Then
    For i As Integer = 0 To dtPA.Rows.Count - 1
        DgvSubAgent.Rows(i).Cells(0).Value = dtPA.Rows(i).Item("SUBAGENT_NAME").ToString.Trim
        'DgvSubAgent.Rows(i).Cells(1).Value = dtPA.Rows(i).Item("BUSINESS_SHARE").ToString.Trim
        'DgvSubAgent.Rows(i).Cells(2).Value = dtPA.Rows(i).Item("COMM_P").ToString.Trim
        DgvSubAgent.Rows(i).Cells(1).Value = dtPA.Rows(i).Item("COMM_VALUE").ToString

    Next
End If

执行
TabControl
时,在选择
TabPage
之前,不会创建每个
TabPage
上的控件。如果在填充网格之前选择包含该网格的选项卡,则会发现它将按预期工作。您可以在代码中实现这一点,只需在已有代码的上方添加一行即可。如果您不想选择选项卡,那么我可以想象有一种方法可以强制在
TabPage
上创建控件。我必须测试以确定,但我希望在
选项卡页面上调用
CreateControl
就可以了。

我使用了一个技巧,在填充datagridview之前添加一行
TabControl1.SelectedIndex=1

比如:

TabControl1.SelectedIndex = 1  ' where datagridview control placed,     
DgvSubAgent.DataSource = dtPA
然后在
end sub
之前,添加一行
TabControl1.SelectedIndex=0
——where search按钮