Правильное превращение статьи в ComboBox

У меня есть один ComboBox что выдает один DataGridView согласно статье, которая выбирается.

С этим полным методом ComboBox:

public void llenarGenero(){
        try{
            cmbGenero.Items.Add("Seleccione");
            string conn = "cadena";
            using (SqlConnection conexion = new SqlConnection(conn)){
                conexion.Open();
                string query = "SELECT genero FROM clientesDos GROUP BY genero";
                SqlCommand sqlCommand = new SqlCommand(query, conexion);
                SqlDataReader dr = sqlCommand.ExecuteReader();
                while (dr.Read()){
                    cmbGenero.Items.Add(dr[0]).ToString();
                }
            }
        }
        catch (SqlException ex){
            MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

С этим методом я реализую фильтр:

private void filtroGenero() {
        if (cmbGenero.SelectedIndex == 0) {
            llenarId();
        }else{
            try {
                DataTable dt = new DataTable();
                string conn = "cadena";
                using (SqlConnection conexion = new SqlConnection(conn)) {
                    conexion.Open();
                    string sSQL = "SELECT id, nombre, celular,url FROM clientesDos WHERE genero = @param";
                    SqlCommand cmd = new SqlCommand(sSQL, conexion);
                    cmd.Parameters.AddWithValue("@param", Convert.ToString(cmbGenero.SelectedIndex));
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);
                }
                dtgId.DataSource = dt;
            } catch (SqlException ex) {
                MessageBox.Show("Error: " + ex.Message,"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }

И потом я это помещаю внутри События:

private void cmbGenero_SelectedValueChanged(object sender, EventArgs e){
            filtroGenero();
        }

Проблема, - что, выбрав тип ComboBox, DataGridView останься пустым. Какое-то возможное решение?

Обновление: колонна ПРОИЗВЕЛА в Базе данных он типа Varchar

0
задан 04.11.2019, 16:53
1 ответ

Загрузь изогнутого используя DataSource

public void llenarGenero(){
    try
    {

        string conn = "cadena";
        using (SqlConnection conexion = new SqlConnection(conn))
        {
            conexion.Open();
            string query = "SELECT genero FROM clientesDos GROUP BY genero";
            var cmd = new SqlCommand(query, conexion);

            var da = new SqlDataAdapter(cmd);
            var dt = new DataTable();
            da.Fill(dt);

            cmbGenero.ValueMember = "genero";
            cmbGenero.DisplayMember = "genero";
            cmbGenero.DataSource = dt;

        }
    }
    catch (SqlException ex){
        MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

тогда ты сможешь получать стоимость используя SelectedValue

private void filtroGenero() 
{
    if (cmbGenero.SelectedIndex == 0) {
        llenarId();
        return;
    }

    try {
        DataTable dt = new DataTable();

        string conn = "cadena";
        using (SqlConnection conexion = new SqlConnection(conn)) 
        {
            conexion.Open();
            string sSQL = "SELECT id, nombre, celular,url FROM clientesDos WHERE genero = @param";
            SqlCommand cmd = new SqlCommand(sSQL, conexion);
            cmd.Parameters.AddWithValue("@param", Convert.ToString(cmbGenero.SelectedValue));
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
        }

        dtgId.DataSource = dt;

    } catch (SqlException ex) {
        MessageBox.Show("Error: " + ex.Message,"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

}

оцени как использование

cmd.Parameters.AddWithValue("@param", Convert.ToString(cmbGenero.SelectedValue));

, чтобы распределять стоимость беря выбор изогнутого

3
ответ дан 01.12.2019, 12:50
  • 1
    Он подал меня, но сейчас я не могу отображать í tem. А именно, заблаговременно añ adí в ComboBox cmbGenero. Статьи. Add (" Seleccione"), что статьи 0 для того, чтобы, если он находится в 0, был загружен весь DataGridView. Тогда, когда эта статья не стоимость ' Женским переходит к тому, чтобы быть 0 и не filtra'. Это podrí чтобы решать снимая if, но я хотел бы solució n с if – Franqo Balsamo 04.11.2019, 17:10
  • 2
    эта добавочная статья может добавлять это, как row в datatable, сделав Fill, () ты должен создавать row – Leandro Tuttini 04.11.2019, 17:44

Теги

Похожие вопросы