c# combobox выборка по ID
есть 2 combobox-a первый выводит данные с помощью SELECT (id, name), второй combobox должен вывести совпадающие с первым комбобоксом записи. ниже выложил код, помогите пожалуйста разобраться.
void SelectCombobox1()
{
MySqlDataAdapter adapterr = new MySqlDataAdapter("SELECT sum.id, sum.name FROM sum", con);
DataSet dsett = new DataSet();
adapterr.Fill(dsett);
for (int i = 0; i < dsett.Tables[0].Rows.Count; i++)
{
combobox1.Items.Add(dsett.Tables[0].Rows[i][0] + " | " + dsett.Tables[0].Rows[i][1]);
}
}
void SelectCombobox2()
{
MySqlDataAdapter adapterr = new MySqlDataAdapter("SELECT dslam.id, dslam.ip FROM dslam JOIN sum ON dslam.sats_id = sum.id WHERE dslam.sats_id = '"+combobox1.Text.ToString()+"'", con);
DataSet dsett = new DataSet();
adapterr.Fill(dsett);
for (int i = 0; i < dsett.Tables[0].Rows.Count; i++)
{
Combobox2.Items.Add(dsett.Tables[0].Rows[i][0] + " | " + dsett.Tables[0].Rows[i][1]);
}
}
Ответы (2 шт):
Короче то, что тебе нужно называется не сортировка, а выборка)
Во-первых убедись, что Text даёт то, что тебе нужно
Скорее всего там должно быть что-то типу
var id = (MyClass)combobox.SelectedItem
ну это, концептуально. А так-то посмотри в сторону https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.combobox.selecteditem?view=windowsdesktop-6.0
и продебаж, убедись что в СКЛ попадает именно то, что тебе надо
Странно вы комбобоксы наполняете. База вообще штука умная, можно результаты оттуда в нужном виде сразу забирать.
void SelectCombobox1()
{
using MySqlDataAdapter adapterr = new MySqlDataAdapter("SELECT sum.id AS id, CONCAT(sum.id, '|', sum.name) as name FROM sum", con);
DataSet dsett = new DataSet();
adapterr.Fill(dsett);
combobox1.ValueMember = "id";
combobox1.DisplayMember = "name";
combobox1.DataSource = dsett.Tables[0];
}
void SelectCombobox2()
{
using MySqlDataAdapter adapterr = new MySqlDataAdapter("SELECT dslam.id AS id, CONCAT(dslam.id, '|', dslam.ip) AS ip FROM dslam JOIN sum ON dslam.sats_id = sum.id WHERE dslam.sats_id = " + combobox1.SelectedValue, con);
DataSet dsett = new DataSet();
adapterr.Fill(dsett);
Combobox2.ValueMember = "id";
Combobox2.DisplayMember = "ip";
Combobox2.DataSource = dsett.Tables[0];
}
при запуске формы combobox автоматом выбирает первый элемент , и во втором комбобоксе выборка только по первого элемента первого комбобокса
void SelectCombobox1()
{
using MySqlDataAdapter adapterr = new MySqlDataAdapter("SELECT sum.id AS id, CONCAT(sum.id, '|', sum.name) as name FROM sum", con);
DataSet dsett = new DataSet();
adapterr.Fill(dsett);
combobox1.ValueMember = "id";
combobox1.DisplayMember = "name";
DataTable dt = dsett.Tables[0];
DataRow dr = dt.NewRow();
dr["id"] = -1;
dr["name"] = "All";
dt.Rows.InsertAt(dr, 0);
combobox1.DataSource = dt;
}
void SelectCombobox2()
{
using MySqlDataAdapter adapterr = new MySqlDataAdapter("SELECT dslam.id AS id, CONCAT(dslam.id, '|', dslam.ip) AS ip FROM dslam JOIN sum ON dslam.sats_id = sum.id" + ((int)combobox1.SelectedValue == -1 ? "" : " WHERE dslam.sats_id = " + combobox1.SelectedValue), con);
DataSet dsett = new DataSet();
adapterr.Fill(dsett);
Combobox2.ValueMember = "id";
Combobox2.DisplayMember = "ip";
Combobox2.DataSource = dsett.Tables[0];
}
