如何在 C# 中创建主要细节组合框?

how to create master detail combobox in C#?

我有一个 excel sheet test.xlsx,两个 sheet

Sheet 名称:Product1 具有以下数据:

ID  ParentID    Title
1   0           P1_1
2   0           P1_2

Sheet 名称:Product2 具有以下数据:

ID  ParentID    Title
1   1           P2_1
2   1           P2_2
3   1           P2_3
4   1           P2_4
5   2           P2_5
6   2           P2_6

在 asp net ( C# ) 中的 WindowsFormsApplication 中调用两个 sheets 作为 :

OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\test.xlsx" + @";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";

/////////////////////////////////////////////////////

OleDbCommand command1 = new OleDbCommand
(
"SELECT ID ,ParentID ,Title " +
" FROM [Product1$]", conn
);
DataSet ds1 = new DataSet();
OleDbDataAdapter adaptor1 = new OleDbDataAdapter(command1);
adaptor1.Fill(ds1);
Product1.DataSource = ds1.Tables[0];
Product1.ValueMember = "ID";
Product1.DisplayMember = "Title";

/////////////////////////////////////////////////////

OleDbCommand command2 = new OleDbCommand
(
"SELECT ID  ,ParentID ,Title " +
" FROM [Product2$] " , conn
);
DataSet ds2 = new DataSet();
OleDbDataAdapter adaptor2 = new OleDbDataAdapter(command2);
adaptor2.Fill(ds2);
Product2.DataSource = ds2.Tables[0];
Product2.ValueMember = "ID";
Product2.DisplayMember = "Title";

我需要知道如何在两个组合框中创建主从(父子)关系,以便当第一个组合框值更改时,第二个组合框值也反映由 ParentID 字段更改..

您可以通过选择当前选定值从 combobox1 中选择项目时触发事件来执行此操作。根据所选值从 sheet2 获取数据并填充第二个组合框。

<asp:ListBox ID="Product1" OnSelectedIndexChanged="Product1_SelectedIndexChanged" runat="server" AutoPostBack="true"></asp:ListBox>

CS 码

int Id = 0;
int.TryParse(Product1.SelectedValue, out Id);

现在基于这个 id 从 sheet2 像这样获取数据

OleDbCommand command2 = new OleDbCommand
(
"SELECT ID  ,ParentID ,Title " +
"FROM [Product2$] Where ParentId=@parentID" , conn
);
command2.Parameters.AddWithValue("@parentID", Id);

其余用于绑定的代码将相同。