Vb.net 添加与行数相等的选项卡页

Vb.net 添加与行数相等的选项卡页,vb.net,Vb.net,我的Access数据库在单人下只有几行。某个人的行数为1,但另一个人的行数大于1。 我想创建标签页来插入此人的详细信息 创建选项卡页时 选项卡页数必须等于行数。(如果此人有04行,则必须创建04个选项卡页 将单独的MS Access DB行数据(列)放入该选项卡页面 如果单击第一个选项卡页:-->该人员详细信息(字段数据/列)的第一行应带有TextBoxes或Labels 如果单击第四个选项卡页:---->该人员详细信息的第四行(字段数据/列)应与TextBoxes或Labels一起出现 我已经

我的Access数据库在单人下只有几行。某个人的行数为1,但另一个人的行数大于1。 我想创建标签页来插入此人的详细信息

创建选项卡页时

  • 选项卡页数必须等于行数。(如果此人有04行,则必须创建04个选项卡页

  • 将单独的MS Access DB行数据(列)放入该选项卡页面

  • 如果单击第一个选项卡页:-->该人员详细信息(字段数据/列)的第一行应带有
    TextBox
    es或
    Label
    s

    如果单击第四个选项卡页:---->该人员详细信息的第四行(字段数据/列)应与
    TextBox
    es或
    Label
    s一起出现

    我已经使用此代码根据行数创建了选项卡页

    Dim newPage As New TabPage()
    Dim RecCount As Integer
    
    While QReaderQ.Read()
        RecCount = RecCount + 1 ' Count How many Rows
    End While
    
    TabControl1.TabPages.Clear()
    
    For xXx = RecCount To 1 Step -1 ' to Desending Order ---->3,2,1
        newPage = New TabPage   'create new instance
            If xXx = 1 Then
                newPage.Text = "Repeat - 1"
            Else
                newPage.Text = "Repeat - " & xXx.ToString
            End If
        TabControl1.TabPages.Add(newPage)
    Next
    
    我想把详细资料从数据库中的标签页

    例如:

    第一次将数据重复到第一个选项卡页(重复数据表示DB列)。

    第四次将数据重复到第四个选项卡页(重复数据表示DB列)。

    既然您使用的是Access,我假设您使用的是
    OleDb
    。您没有指明
    QReaderQ
    是什么,但根据名称,它听起来像是一个
    OleDbDataReader

    由于(同样,根据您发布的代码)您希望按降序排列,因此我建议您改用
    OleDbDataAdapter
    ——数据读取器仅向前,因此不能按相反顺序排列

    我还建议将创建每个选项卡页面的代码移动到它自己的函数中,并从For循环中调用该函数

    把这些放在一起,它可能看起来像这样:

    Dim TabContent As DataTable
    ' Pass in your selection string and your connection object
    Dim Adapter As New OleDbDataAdapter("SELECT * FROM table", con)
    Dim newPage As TabPage
    
    ' Fill the DataTable TabContent with the result from your select command
    Adapter.Fill(TabContent)
    
    TabControl1.TabPages.Clear()
    
    For xXx As Integer = TabContent.Rows.Count To 1 Step -1
    
        ' Pass in the current row - use xXx - 1 since the row collection is 0 based
        newPage = InitializeTabPage(TabContent.Rows(xXx - 1))
        newPage.Text = "Repeat - " + xXx.ToString()
        TabControl1.TabPages.Add(newPage)
    Next
    
    InitializeTabPage是一个返回选项卡页的函数。您需要在此页上创建控件

    Public Function InitializeTabPage(ByVal Row As DataRow) As TabPage
    
        Dim newPage As New TabPage()
    
        ' Create the control and bind the data from the row to them 
    
        Return newPage
    End Function
    
    InitializeTabPage
    函数中,您从表中获取一个数据行。您需要在每个选项卡页上创建文本框和标签,然后从该行将适当的数据绑定到它们

    例如,如果您有一个名为
    lblName
    的标签,并且行
    Name
    中有一列,则可以执行以下操作:

    lblName.Text = Row("Name").ToString()
    
    一些有用的链接:


    -关于VB.NET和Access的教程

    既然您使用的是Access,我假设您使用的是
    OleDb
    。您没有指明
    QReaderQ
    是什么,但根据名称,它听起来像是一个
    OleDbDataReader

    由于(同样,根据您发布的代码)您希望按降序排列,因此我建议您改用
    OleDbDataAdapter
    ——数据读取器仅向前,因此不能按相反顺序排列

    我还建议将创建每个选项卡页面的代码移动到它自己的函数中,并从For循环中调用该函数

    把这些放在一起,它可能看起来像这样:

    Dim TabContent As DataTable
    ' Pass in your selection string and your connection object
    Dim Adapter As New OleDbDataAdapter("SELECT * FROM table", con)
    Dim newPage As TabPage
    
    ' Fill the DataTable TabContent with the result from your select command
    Adapter.Fill(TabContent)
    
    TabControl1.TabPages.Clear()
    
    For xXx As Integer = TabContent.Rows.Count To 1 Step -1
    
        ' Pass in the current row - use xXx - 1 since the row collection is 0 based
        newPage = InitializeTabPage(TabContent.Rows(xXx - 1))
        newPage.Text = "Repeat - " + xXx.ToString()
        TabControl1.TabPages.Add(newPage)
    Next
    
    InitializeTabPage是一个返回选项卡页的函数。您需要在此页上创建控件

    Public Function InitializeTabPage(ByVal Row As DataRow) As TabPage
    
        Dim newPage As New TabPage()
    
        ' Create the control and bind the data from the row to them 
    
        Return newPage
    End Function
    
    InitializeTabPage
    函数中,您从表中获取一个数据行。您需要在每个选项卡页上创建文本框和标签,然后从该行将适当的数据绑定到它们

    例如,如果您有一个名为
    lblName
    的标签,并且行
    Name
    中有一列,则可以执行以下操作:

    lblName.Text = Row("Name").ToString()
    
    一些有用的链接:

    -关于VB.NET和Access的教程