C# CheckedListBox'a SQL'den Veri Çekme

Bu konuyu okuyanlar

UgurOnline

Asistan
Katılım
11 Aralık 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
arkadaşlar aşağıdaki kodla listboxa sql üzerinden verileri çekebiliyorum. benim istediğim checkedlistbox'ta tüm seçenekler gösterilsin ama sadece kayıtların tutulduğu tablodakiler seçili olsun. çok kolay bişi sanırım ama beceremedim

listboxa çekerken kullandığım kod:

Kod:
SqlCommand com = new SqlCommand(@"SELECT * FROM SeansIlaclar si INNER JOIN Ilaclar i ON si.IlacID = i.IlacID WHERE si.SeansID=" + ana.Seanslar_SeansID(), con);
            SqlDataAdapter da = new SqlDataAdapter(com);
            DataSet ds = new DataSet();
            da.Fill(ds);
            listBox1.DataSource = ds.Tables[0];
            listBox1.DisplayMember = "IlacAdi";
            listBox1.ValueMember = "IlacID";
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,609
Reaksiyon puanı
144
Puanları
63
SeansIlaclar tablosunda olan verilerin işaretli olmasını mı istiyorsun?
 

UgurOnline

Asistan
Katılım
11 Aralık 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
evet
Ilaclar tablosunun listelenmesini, SeansIlaclar tablosundakilerinde seçili olmasını istiyorum
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,609
Reaksiyon puanı
144
Puanları
63
O zaman ilk başta ilaçlar tablosu ile doldurman gerekir checkedlistboxu:

PHP:
string sql = "Select ilacid, ad from Ilaclar;";
DataTable dt = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(sql, con);
con.Open();
adp.Fill(dt);
con.Close();

checkedListBox1.DataSource = dt;
checkedListBox1.DisplayMember = "ad";
checkedListBox1.ValueMember = "ilacid";

Daha sonra sadece istediğin ilaçları seçmen gerekiyor:

PHP:
string sql = "Select ilacid from SeansIlaclar;";
DataTable dt2 = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(sql, con);
con.Open();
adp.Fill(dt2);
con.Close();

for(int i=0; i<dt2.Rows.Count; i++)
{
    foreach(DataRowView row in checkedListBox1.Items)
    {
        if(row["ilacid"].ToString() == dt2.Rows[i][0].ToString())
            checkedListBox1.SetItemChecked(i, true);
    }
}
 

UgurOnline

Asistan
Katılım
11 Aralık 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
listelerken tamam ama seçme kısmında şu hatayı verdi

Kod:
List that this enumerator is bound to has been modified. An enumerator can only be used if the list does not change.
 

UgurOnline

Asistan
Katılım
11 Aralık 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
çözümü bilen varmı arkadaşlar dünden beri kıvranıyorum :s
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,609
Reaksiyon puanı
144
Puanları
63
Şu şekilde de olabilir:

PHP:
string sql = "Select ilacid from SeansIlaclar;";
DataTable dt2 = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(sql, con);
con.Open();
adp.Fill(dt2);
con.Close();

for (int i = 0; i < dt2.Rows.Count; i++)
{
    for (int j = 0; j < checkedListBox1.Items.Count; j++)
    {
        if ((checkedListBox1.Items[j] as DataRowView)["ilacid"].ToString() == dt2.Rows[i][0].ToString())
            checkedListBox1.SetItemChecked(j, true);
    }
}
 

UgurOnline

Asistan
Katılım
11 Aralık 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
çok saol necati where koşulunuda kullanarak hallettik

Kod:
"Select IlacID from SeansIlaclar WHERE SeansID=" + ana.Seanslar_SeansID();
 
Üst