Как отфильтровать второй комбинированный список на основе выбора в первом комбинированном списке? - PullRequest
0 голосов
/ 19 мая 2019

Не удается отфильтровать второй комбинированный список (cmbRegion), когда я нажимаю на элемент в первом комбинированном окне (cmbHouse).

Я заполняю 2 комбинированных списка следующим образом:

        //cmbHouse
        string cmbHouse_query = "SELECT * FROM House";
        OleDbDataAdapter dahouse = new OleDbDataAdapter(cmbHouse_query, connection);
        DataTable tablehouse = new DataTable();
        dahouse.Fill(tablehouse);
        cmbHouse.DataSource = tablehouse;
        cmbHouse.DisplayMember = "House_names"; 
        cmbHouse.ValueMember = "House.num_region"; //this is foreign key which equals to Region table's primary key
        cmbHouse.SelectedIndex = -1;

        //cmbRegion
        string cmbRegion_query = "SELECT * FROM Region";
        OleDbDataAdapter daregion = new OleDbDataAdapter(cmbRegion_query, connection);
        DataTable tableregion = new DataTable();
        daregion.Fill(tableregion);
        cmbRegion.DataSource = tableregion;
        cmbRegion.DisplayMember = "Nameofregions";
        cmbRegion.ValueMember = "ID_region";
        cmbRegion.SelectedIndex = -1;

Я пытался отфильтровать по этому коду:

    private void cmbHouse_SelectionChangeCommitted(object sender, EventArgs e)
    {
        DataRow selectedDataRow = ((DataRowView)cmbHouse.SelectedItem).Row;
        int num_region = Convert.ToInt32(cmbHouse.SelectedValue);
        string query = "SELECT * FROM Region, House WHERE Region.ID_region='" + num_region.ToString() + "'";
        OleDbDataAdapter danum_region = new OleDbDataAdapter(query, connection);
        DataTable tablenum_region = new DataTable();
        danum_region.Fill(tablenum_region);
        cmbRegion.DataSource = tablenum_region;
        cmbRegion.DisplayMember = "Nameofregions";
        cmbRegion.ValueMember = "ID_region";
    }

Когда я щелкаю по любому элементу в первом поле со списком (cmbHouse), появляется сообщение об ошибке: «System.Data.OleDb.OleDbException:« Несоответствие типов данных в выражении критерия. »». Я хочу, чтобы второй выпадающий список (cmbRegion) показывал только тот регион, в котором расположен дом. Например, [дом_имя] находится в этом регионе.

Спасибо за помощь.

...