0

我在连接到 Oracle 数据库的 VB.Net Winform 应用程序中有两个网格控件。第一个显示了一个表 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"

我错过了什么吗?

谢谢你。

4

0 回答 0