0

希望在由代码创建的另一个选项卡上引用数据网格视图。

我想用当前选定选项卡中的数据网格视图的列填充组合框。现在我只能让组合框填充用户加载的最后一个文件,而不是选择 w/e 选项卡。

Dim mstrFirstFile As String = ""
Dim mstrFileName As String = ""
Dim mdstTableInput As New DataSet
Dim mintCounter As Integer
Dim mdgvTab As DataGridView

Public Function CreateNewDGVInsideNewPageTab() As DataGridView
    Dim tbpNewTab As New TabPage()
    tbpNewTab.Text = mstrFileName

    Dim mdgvTabControl As New DataGridView
    mdgvTabControl.Dock = DockStyle.Fill
    mdgvTabControl.Name = ("Grid" + ToString(mintCounter))

    tbpNewTab.Controls.Add(mdgvTabControl)
    tbcsource.TabPages.Add(tbpNewTab)
    tbcsource.SelectedTab = tbpNewTab
    Return mdgvTabControl
End Function

Private Sub generate()

    Dim objCLSConverter As New DataTier.clsCSVConverter
    Dim strNewXMLPath As String = ""
    Dim xmlFile As XmlReader

    If mstrFirstFile.Length > 1 Then


        strNewXMLPath = objCLSConverter.writeXML(mstrFirstFile)

        xmlFile = XmlReader.Create(strNewXMLPath, New XmlReaderSettings())

        Dim dsTemp As DataSet = New DataSet
        Dim dtTable As DataTable = Nothing

        dsTemp.ReadXml(xmlFile)
        dtTable = dsTemp.Tables(0).Copy
        dtTable.TableName = mintCounter
        mdstTableInput.Tables.Add(dtTable)

        mdgvTab = CreateNewDGVInsideNewPageTab()

        mdgvTab.DataSource = mdstTableInput.Tables(mintCounter)

        mintCounter = (mintCounter + 1)

        cbxColumnsUpdate()

        xmlFile.Close()

    End If
End Sub

任何帮助,或者如果您需要更多我的代码,请告诉我。


该程序获取用户添加的任何 .csv 或 .xls 文件并将其放入数据集中。它将这些文件添加到一个新的代码生成选项卡上,其中包含一个数据网格视图,其中加载了文件。

选择选项卡时,组合框将填充该选项卡数据网格视图的所有列名,您可以选择任何选项卡,它将重新填充该选项卡的组合框。然后,您可以从组合框中选择列名,然后在文本框中输入您在该列中搜索的 w/e,它只是一个 select where 子句。

然后,这些数据将被扔到下面的数据网格视图中,供用户查看并导出到 Excel 或继续更改。这都是为了一般报告目的和数据按摩。

现在的问题是组合框不会根据选择的选项卡重新填充。

4

1 回答 1

0

只是一个选项 - 转换这个:

Dim mdgvTab As DataGridView

到字典:

Dim mdgvTabDictionary As Dictionary(Of Integer, DataGridView)

然后,在Sub generate()你里面替换这个:

mdgvTab = CreateNewDGVInsideNewPageTab()

对此:

Dim mdgvTab As DataGridView = CreateNewDGVInsideNewPageTab()
mdgvTabDictionary.Add(mintCounter, mdgvTab)

现在您不需要处理控件层次结构并按名称查找控件。相反,您可以DataGridView通过 index: 找到您需要的mdgvTabDictionary(index)

不要忘记mdgvTabDictionarySub New, Form_Load(或适用于您的情况的任何其他地方)初始化:

mdgvTabDictionary = New Dictionary(Of Integer, DataGridView)
于 2013-02-26T19:52:08.860 回答