[英]Using ADO.Net DataSet and TableAdapter for populating combox with filter
我有一個帶有數據集和 tableadapter 的 windows 窗體。
Table1 [id, action, info]
Table2 [id, actionId, command]
private void cbActions_SelectedIndexChanged(object sender, EventArgs e)
{
this.optionsTableAdapter.Fill(this.actionsDS.Options);
BindingSource source1 = new BindingSource();
source1.DataSource = actionsDS;
source1.Filter = "ActionId = " + cbActions.SelectedValue;
cbOptions.DataSource = source1;
}
我不知道如何根據第一個組合框 (cbActions) 過濾第二個組合框 (cbOptions)。
在 sql 中,我將使用“SELECT options where actionid = 5”但是,為簡單起見,我嘗試使用內置的 ado.net 數據集和數據表。
它必須很容易,我必須接近。
昨天想了好幾個小時。
int actionId = 5;
ActionsDS.OptionsDataTable optionsDt = optionsTableAdapter.GetByActionId(actionId);
cbOptions.DataSource = optionsDt;
使用數據關系可能更簡單 - 您的 CarDataSet 中有 3 個表 - 制造商、型號、修剪。 它們之間都有 DataRelations,假設它們被命名為 ManufacuterModel 和 ModelTrim
您打開數據源窗口(查看菜單-其他窗口)並展開每個節點。 你會看到你有制造商、模型和修剪的頂級節點,但在制造商下你有模型,在它下面你有修剪(和根模型下的另一個修剪)
將Manufacturer拖到窗體上創建一個DataGridView,將Manufacturer的子級Model拖到窗體上,拖拽Model的子級Trim
您現在應該有 3 個綁定源,但關鍵是:
運行應用程序; 在制造商網格中選擇父行將模型網格過濾為來自該制造商的汽車,並且修剪細化為僅研磨第一個模型。 選擇一個模型和修剪改變等
停止程序(只是為了演示它的工作)並將組合框綁定到那些綁定源,刪除網格(除非您使用組合來驅動網格,在這種情況下,網格可能更適合您的 UI
不要忘記,這只有在數據表充滿數據(相關的)時才有效——如果你有成千上萬的制造商、型號和裝飾,那將是一個大數據集(選擇性加載會更好,但它更多復雜的)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.