Saya memiliki formulir windows dan parameter kain pilihan pengguna dari kotak kombo seperti metode negara-negara-kota. dan parameter saya adalah:
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.
Saya mengisi typeNameCombobox di formLoad setelah itu typeNoCombobox mengisi acara typeNameCombobox_SelectedIndexChanged() dan seperti ini patternCombobox mengisi acara typeNoCombobox_SelectedIndexChanged() ...
tetapi ada masalah di typeNameCombobox_SelectedIndexChanged() pesan kesalahan mengatakan bahwa:
Pengidentifikasi multi-bagian "System.Data.DataRowView" tidak dapat diikat.
dan menggunakan metode yang tidak masuk akal ini
if (typeNameCombobox .SelectedValue.ToString() != "System.Data.DataRowView")
{
fill -> typeNoCombobox
}
Meskipun keempat kotak kombo ini bergantung, kotak kombo di bawah ini tidak terisi pada muatan pertama.
dan saya menggunakan metode absurd kedua
typeName.selectedIndex = 1;
typeName.selectedIndex = 0;
typeName.selectedIndex = 1;
typeName.selectedIndex = 0;
(Saya harus membuat ini minimal 4 kali karena ada empat kotak kombo yang bergantung)
setelah semua kotak kombo terisi tidak ada masalah jika pengguna mengubah typeName semua nilai dependen berubah
apakah ada cara untuk membuat kode ini dengan jelas?
edit setelah respons:
tipTur=nama tipe tip = tipeNo desen = variasi pola = varian
ini kode asli saya
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");
}
}
dan kode di kelas koneksi seperti ini:
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
, menambahkan alias dan jugadistinct tipTurId as tipTurId
- person V4Vendetta   schedule 27.06.2011