我在连接到 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"
我错过了什么吗?
谢谢你。