我有一张excel表test.xlsx
,两张
工作表名称:Product1
包含以下数据:
ID ParentID Title
1 0 P1_1
2 0 P1_2
工作表名称: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中的两个工作表调用为:
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字段更改。
答案 0 :(得分:0)
您可以通过选择当前选定的值从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);
其他用于biniding的代码将是相同的。