2011-07-27 96 views
3

我有我認爲是一個簡單的問題,但經過多次搜索後找不到合適的示例。 簡單來說,它是一個窗體應用程序,在窗體上有兩個數據綁定組合框,第一個是「Department」,第二個是「Section」。這些組合每個綁定到SQL數據庫中的相應表。組合應該與用戶從第一個選擇部門一起操作,這導致第二個組合被過濾以僅顯示屬於該部門的部分。 (換句話說,這是經典的「級聯」組合框問題)。 我的經驗最初來自Delphi,這是一個簡單的設計時間問題。C# - 在設計時設置數據綁定級聯組合框

但是,在C#中,我卡住了,只是無法讓它工作。我會認爲這可以在設計時完成,也許在SelectedIndexChanged事件背後有一些最小的代碼。如果有人有基本的(表單,2個組合框,簡單的數據源)例子,我會非常感激他們可以指向我。

謝謝,詹姆斯

+0

如何檢測設計時間模式已被回答http://stackoverflow.com/questions/73515/how-to-tell-if-net-code-is-being-run-by-visual-studio-designer –

回答

1
ComboBox cbDepartment = new ComboBox(); 
cbDepartment.Name = "cbDepartment"; 
cbDepartment.DataSource = dsDepartments; 
cbDepartment.SelectedIndexChanged = new System.EventHandler(cbDepartment_SelectedIndexChanged); 

private void cbDepartment_SelectedIndexChanged(object sender, System.EventArgs e) { 
    cbSection.DataSource = GetSection(cbDepartment.SelectedItem.Value); 
} 

你可以嘗試像上面。

0

您沒有指定您綁定的內容。我總是綁定到對象,所以這裏是我如何做到這一點:

在窗體加載事件:

ddlParent.DataSource = new BindingSource(myIEnumerable, null); 

,對上級組合框的事件處理程序:

private void ddlParent_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    ddlChild.DataSource = new BindingSource((MyBoundType)ddlParent.SelectedItem, null); 
} 

我不不知道在設計時做到這一點。

您應該重寫綁定到下拉列表的對象的ToString()方法,以控制組合框中顯示的文本。