У меня есть форма окна, и пользователь выбирает параметры ткани из выпадающих списков, таких как метод страна-штат-город. и мои параметры:
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 в formLoad после того, как typeNoCombobox заполняет событие typeNameCombobox_SelectedIndexChanged(), и, как этот шаблон, Combobox заполняет событие 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=typename 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");
}
}
и коды в connectionclass следующим образом:
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;
}
distinct tipNo as tipNo
, добавить псевдоним, а такжеdistinct tipTurId as tipTurId
- person V4Vendetta   schedule 27.06.2011