Datagridview在标签页中第一次不显示数据

时间:2018-10-12 09:42:54

标签: 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("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

2 个答案:

答案 0 :(得分:0)

实现TabControl的目的是要在选择TabPage之前不会在每个TabPage上创建控件。如果在填充该网格之前选择包含该网格的选项卡,则应该会发现它可以正常工作。您可以在代码中做到这一点,只需在现有内容上方添加一行即可。如果您不想选择该选项卡,那么我可以想象有一种方法可以强制在该TabPage上创建控件。我必须进行测试才能确定,但​​是我希望在CreateControl上调用TabPage可以解决问题。

答案 1 :(得分:0)

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

喜欢:

TabControl1.SelectedIndex = 1  ' where datagridview control placed,     
DgvSubAgent.DataSource = dtPA

然后在end sub之前,添加一行TabControl1.SelectedIndex = 0 ---搜索按钮