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