У меня есть один 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
Загрузь изогнутого используя 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));
, чтобы распределять стоимость беря выбор изогнутого