Верит в метод выданный для ComboBox, но когда я выбираю какую-то статью коллекции ComboBox, выходит эта ошибка:
System.InvalidOperationException: 'No se ha inicializado la propiedad SelectCommand antes de llamar a 'Fill'.'
Это метод выданный:
private void filtroGenero() {
if (cmbGenero.SelectedIndex == 0) {
llenarId();
}else{
try {
DataTable dt = new DataTable();
string conn = "cadena de conexion";
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.ToInt32(cmbGenero.SelectedIndex));
SqlDataAdapter da = new SqlDataAdapter();
da.Fill(dt);
}
dtgId.DataSource = dt;
} catch (SqlException ex) {
MessageBox.Show("Error: " + ex.Message,"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Какое-то возможное решение?
Как он показывает тебе ошибку, ты должен присоединять один command
со свойством SelectCommand
из DataAdapter
.
ты это Можешь видеть в documentaciГіn чиновник Microsoft .
ты Можешь приносить это, как польза сказала тебе @Pikoh, или следующий способ:
DataTable dt = new DataTable();
string conn = "cadena de conexion";
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.ToInt32(cmbGenero.SelectedIndex));
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(dt);
}
dtgId.DataSource = dt;
Ты создаешь один Sqlcommand
, но ты не распределяешь это DataAdapter
, с которым этот Гєltimo не знает, что делать.
ты Можешь использовать перегрузку строителя DataAdapter
, который получает один Sqlcommand
:
SqlDataAdapter da = new SqlDataAdapter(cmd);