2015-04-28 21 views
0

我有一個excel表test.xlsx,內如何在C#中創建主細節組合框?

表名稱兩個片材: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

查看ASP.net Ajax控件工具包:http://www.ajaxcontroltoolkit.com/CascadingDropDown/CascadingDropDown.aspx –

+0

我是初學者。只需要簡單的Windows窗體解決方案 – Cookie

回答

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 [email protected]" , conn 
); 
command2.Parameters.AddWithValue("@parentID", Id); 

和休息的代碼biniding將是相同的。

+0

值得注意的是,每次'Product1'發生變化時,這都會回傳給服務器。 –

+0

是的,我知道,但從Excel中獲取數據並將其綁定到組合框由c#代碼完成,所以這只是一個解決方案。 – Mairaj

+0

感謝您的詳細回覆。 – Cookie