链接两个DataGridViews

时间:2013-10-24 11:15:37

标签: vb.net oracle

我在连接到Oracle数据库的VB.Net Winform应用程序中有两个Grid控件。第一个显示表1,其中包含字段(以及其他)ID和TaskName。第二个显示一个链接表,其中包含字段(以及其他)任务。在应用程序的逻辑中,两个表被链接(表1,字段ID)< ----> (表2,实地任务)。

我想,当在第一个DataGridView中选择一行时,在第二个GridView中只有链接的行,但我无法使其工作。

这是我的代码尝试:

    Dim SQLQuery As String = "SELECT * FROM SCHEME.ARCH_TASKS"

    Conn = New OracleConnection(ConnectionString)
    Command = New OracleCommand(SQLQuery, Conn)
    DataAdapter = New OracleDataAdapter(Command)

    DataSet = New DataSet()
    DataTable1 = New DataTable

    DataSet.Tables.Add(DataTable1)
    DataAdapter.Fill(DataTable1)

    DataGridView.DataSource = DataTable1.DefaultView
    GridControl1.DataSource = DataTable1.DefaultView



    SQLQuery = "SELECT * FROM SCHEME.ARCH_LINK_ROLE_TASK"
    Command = New OracleCommand(SQLQuery, Conn)
    DataAdapter = New OracleDataAdapter(Command)

    DataTable2 = New DataTable

    DataSet.Tables.Add(DataTable2)
    DataAdapter.Fill(DataTable2)
    GridControl2.DataSource = DataTable2


    DataSet.Relations.Add(DataTable1.Columns("ID"), DataTable2.Columns("TASK"))

结果如下

http://img11.hostingpics.net/pics/4713062013102413h1253.png

正如您所看到的,我手动添加了两个数据表之间的关系,但它并没有真正实现我正在寻找的东西。它只是在第一个网格控件中添加了一个子行。

http://img11.hostingpics.net/pics/7508382013102413h1309.png

我试图应用PeterG建议但我仍然无法使其发挥作用。

    Dim SQLQuery As String = "SELECT * FROM SCHEME.ARCH_TASKS"

    Command = New OracleCommand(SQLQuery, Conn)
    DataAdapter = New OracleDataAdapter(Command)
    DataSet.Tables.Add(DataTable1)
    DataAdapter.Fill(DataTable1)

    SQLQuery = "SELECT * FROM SCHEME.ARCH_LINK_ROLE_TASK"

    Command = New OracleCommand(SQLQuery, Conn)
    DataAdapter = New OracleDataAdapter(Command)
    DataSet.Tables.Add(DataTable2)
    DataAdapter.Fill(DataTable2)

    DataSet.Relations.Add(DataTable1.Columns("ID"), DataTable2.Columns("TASK"))

    BindingSource1.DataSource = DataSet
    GridControl1.DataSource = BindingSource1.DataSource
    GridControl1.DataMember = "Table1"

    BindingSource2.DataSource = BindingSource1.DataSource
    GridControl2.DataSource = BindingSource2.DataSource
    GridControl2.DataMember = "Table2"

我错过了什么吗?

谢谢。

0 个答案:

没有答案