簡體   English   中英

使用 ADO.Net DataSet 和 TableAdapter 填充帶有過濾器的組合框

[英]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 個綁定源,但關鍵是:

  • 制造商綁定源綁定到數據集表
  • 模型 bs 綁定到制造商 bs 並有一個數據成員設置為制造商模型關系的名稱
  • 修剪 bs 綁定到模型 bs 並具有 ModelTrim 的數據成員

運行應用程序; 在制造商網格中選擇父行將模型網格過濾為來自該制造商的汽車,並且修剪細化為僅研磨第一個模型。 選擇一個模型和修剪改變等

停止程序(只是為了演示它的工作)並將組合框綁定到那些綁定源,刪除網格(除非您使用組合來驅動網格,在這種情況下,網格可能更適合您的 UI

不要忘記,這只有在數據表充滿數據(相關的)時才有效——如果你有成千上萬的制造商、型號和裝飾,那將是一個大數據集(選擇性加載會更好,但它更多復雜的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM