У меня есть форма окна, и пользователь выбирает параметры ткани из выпадающих списков, например, страна-штат
метод. и мои параметры:
typeName - typeNo - pattern - variant
R - 125 - 254978 - 1
R - 125 - 254979 - 1
R - 125 - 254979 - 2
Ri- 54 - 54658 - 1
Ri- 54 - 54658 - 2... etc.
Я заполняю typeNameCombobox в форме загрузки
после typeNoCombobox заполнить событие typeNameCombobox_SelectedIndexChanged ()
и как этот patternCombobox, заполните событие typeNoCombobox_SelectedIndexChanged () ...
но есть проблема в typeNameCombobox_SelectedIndexChanged ()
сообщение об ошибке гласит:
Не удалось связать идентификатор из нескольких частей «System.Data.DataRowView».
и использовать этот абсурдный метод
if (typeNameCombobox .SelectedValue.ToString() != "System.Data.DataRowView")
{
fill -> typeNoCombobox
}
Хотя эти четыре комбинированных списка являются зависимыми, указанные ниже комбинированные списки не заполняются при первой загрузке.
и я использую второй абсурдный метод
typeName.selectedIndex = 1;
typeName.selectedIndex = 0;
typeName.selectedIndex = 1;
typeName.selectedIndex = 0;
(я должен сделать это минимум 4 раза, потому что есть четыре зависимых выпадающих списка)
после заполнения всех выпадающих списков проблем не возникает, если пользователь меняет typeName, все зависимые значения меняются
есть ли способ сделать этот код ясно?
редактировать после ответа:
tipTur = имяТип
tip = typeNo
desen = шаблон
переменная = вариант
вот мой оригинальный код
ConnectionClassOleDb cc = new ConnectionClassOleDb();
private void SiparisDetay_Load(object sender, EventArgs e) //formload
{
sorgu = "Select distinct tipTurId, tipTur from View_Tip order by tipTur";
cc.cbDoldur(sorgu, cbTipTur, "tipTur", "tipTurId");
cbTipTur.SelectedIndex = 1;
cbTipTur.SelectedIndex = 0;
cbTipTur.SelectedIndex = 1;
cbTipTur.SelectedIndex = 0;
}
private void cbTipTur_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbTipTur.SelectedValue.ToString() != "System.Data.DataRowView")
{
string sorgu = "SELECT distinct tipNo FROM tblTip where " +
" tipTurId = '" + cbTipTur.SelectedValue.ToString() + "' ORDER BY tipNo";
cc.cbDoldur(sorgu, cbTip, "tipNo", "tipNo");
}
}
private void cbTip_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbTip.SelectedValue.ToString() != "System.Data.DataRowView")
{
string sorgu = "SELECT desen FROM tblTip WHERE " +
" tipTurId = '" + cbTipTur.SelectedValue.ToString() +
"' AND tipNo = '" + cbTip.SelectedValue.ToString() + "' order by desen";
cc.cbDoldur(sorgu, cbDesen, "desen", "desen");
}
}
private void cbDesen_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbDesen.SelectedValue.ToString() != "System.Data.DataRowView")
{
string sorgu = "SELECT varyant FROM tblTip WHERE " +
" desen = '" + cbDesen.SelectedValue.ToString() +
"' AND tipTurId = '" + cbTipTur.SelectedValue.ToString() +
"' AND tipNo = '" + cbTip.SelectedValue.ToString() + "' ORDER BY varyant";
cc.cbDoldur(sorgu, cbVaryant, "varyant", "varyant");
}
}
и коды в классе соединения, как это:
public void cbDoldur(string sorgu, ComboBox cb, string text, string value) //fill combobox
{
DataTable dtDdl = Dt(sorgu);
cb.DataSource = dtDdl;
cb.DisplayMember = text;
cb.ValueMember = value;
if (cb.Items.Count > 0)
{
cb.SelectedIndex = 0;
}
}
public DataTable Dt(string query)
{
DataTable dt = new DataTable();
if (Open())
{
OleDbDataAdapter da = new OleDbDataAdapter(query, connection);
try
{
da.Fill(dt);
}
catch (Exception ex)
{
MessageBox.Show("Sistem Mesajı:" + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
//connection.Close();
return dt;
}