Forum

Asp.Net' te Checkbo...
 
Bildirimler
Hepsini Temizle

Asp.Net' te Checkboxlist' te ki Kayıtları DB' ye Nasıl Kaydedebilirim?

15 Yazılar
3 Üyeler
0 Reactions
1,521 Görüntüleme
(@EbruBulgan)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

Merhabalar, sitenin adını uzun süredir duyuyordum ve duyduğum olumlu yorumlarda beni buraya yönlendirdi. İzninizle konuya gireyim.=) Öncelikle belirtmeliyim, konuyu açmadan önce diğer konu başlıklarını inceleyip yaşadığım probleme benzer bir konu var mı diyerek baktım. Bir tane bulabildim o da Listbox ile ilgili bir konuydu ve dili VB olduğu için pekte yararlanabildiğim söylenemez. Son çare olarak konuyu açmak durumunda kaldım. Belirtmek istedim sadece.

Çalıştığım projemde ufak bir problemim var. Öncelikle projemi anlatmak daha sağlıklı olacak sanırım. Projem bir register.aspx, login.aspx ve default.aspx formlarından ibaret.

Register.aspx kullanıcıların Text' lere istenen bilgileri girmesi ve butona basıldığı anda da girilen bilgilerin veritabanına kaydedilmesi şeklinde yapıldı.

login.aspx te de kullanıcıdan kayıtlı ise kullanıcı adı
ve şifre isteniyor, butona basınca da default.aspx sayfasına
yönlendirerek ekrana hoşgeldiniz tarzında ufak bir yazı ve logout butonu
mevcut.

Projem özetle bu. Aslında projemi bitirdim ufak bir ayrıntı dışında sorunsuz çalışıyor.

Problemim ise; Db de ki tablomun alan adlarından biri 'Hobiler' ve bu
alanda birden fazla veri olması istendi benden('yüzmek,resim
çekmek,sinema' gibi...). Yani Asp.Net tarafında Checkboxlist ile birden
fazla seçenek
vereceğim ve kullanıcının seçtikleri de veritabanına kaydedilecek. Bu
kısımla ilgili bir ilerleme kaydedemedim maalesef. Nette araştırdıklarım
genelde veritabanındaki kayıtları Checkbox'a getirmek ile ilgiliydi
bana tam tersi gerek. Birkaç örnek buldum ancak denediğimde istediğim verimi alamadım maalesef. :S

Özetle; Checkboxlist' teki seçtiğim kayıtları
veritabanına nasıl kaydedebilirim?

Yardımlarınız için şimdiden teşekkür ederim.

 
Gönderildi : 22/06/2011 17:31

(@AbdullahUgraskan)
Gönderiler: 13
Active Member
 

Merhaba,  http://www.apostylee.com/aspnet-ddownlist-checkboxlist-ve-radiobuttonlist-kontrollerinin-kullanimi/  şurada nasıl kullanıldığını yazmıştım. Eğer anlaşılmayan bir durum olursa yine buradan sorabilirsiniz. Kolay gelsin.

 
Gönderildi : 22/06/2011 18:45

(@AbdullahUgraskan)
Gönderiler: 13
Active Member
 

Hımm baktımda bende sadece db den doldurma işini yazmışım 🙂

 Şu şekilde basit bir döngü kurup seçilenleri alabilirsiniz 😉

foreach (ListItem item in CheckBoxList1.Items)
{
if (item.Selected)
                {
                    Response.Write(item.Value);
                }
}

 
Gönderildi : 22/06/2011 18:51

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba,

 

 Buna benzer şey olabilir.Ama burada "iterate CheckBoxList" sahip olmalısınız.

foreach (CheckBox item in CheckBoxList1)
    {
        if (item.Checked)
        {

        }
    }

Saygılar,

 
Gönderildi : 22/06/2011 19:21

(@EbruBulgan)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

İlgilendiğiniz için teşekkür ederim.

Verdiğiniz örneği denedim ancak şöyle bir durum oluştu. Checkboxlist' te ki seçeneklerimden 2 tanesini seçip çalıştırdığımda Db' ye kaydediyor ancak aynı alanda değil. Altalta aynı 2 satır oluşuyor, iki kere kaydetmişim gibi. Sadece hobi kısmı farklı. İlkinde ilk seçtiğim, diğerinde ikinci seçtiğim. Benim istediğim bunları yanyana kaydedebilmek.

Atıyorum; 

a,b şeklinde gibi.                                                                                                                                                                                                                      

 
Gönderildi : 22/06/2011 19:27

(@EbruBulgan)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

Merhaba,

 

 Buna benzer şey olabilir.Ama burada "iterate CheckBoxList" sahip olmalısınız.

foreach (CheckBox item in CheckBoxList1)
    {
        if (item.Checked)
        {

        }
    }

Saygılar,

İlgilendiğiniz için teşekkürler.

Verdiğiniz örnek  ilk örnekle aynı gibi, sadece sizinde dediğiniz gibi iterate checkbox gerekiyor ki onu da göremedim. =) Önceki yorumumda da belirttiğim gibi istediğim seçtiklerimi ilgili alana a,b şeklinde kaydedebilmek. Böyle yapınca alt alta oluyor ve bu kayıt tekrarına sebep oluyor. Bunla ilgili yardımcı olabilir misiniz?

 
Gönderildi : 22/06/2011 19:32

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba Forumumuza öncelikle hoşgeldiniz!

Şimdi cevap verebiliriz.Söylediğiniz gibi aralarına virgül koyarak yapmak istiyorsanız o zaman şunu deneyiniz.

   String selectedItem = string.Empty;
    foreach (ListItem item in CheckBoxList1.Items)
    {
        if (item.Selected)
        {
            string.Format(selectedItem, ",", item.Value);
        }
    }

    selectedItem = selectedItem.Substring(1);

Saygılar,

 
Gönderildi : 22/06/2011 20:30

(@EbruBulgan)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

Çok teşekkür ederim, hoşbuldum.

Verdiğiniz örneği denedim ancak yine bir sorun var.

'   selectedItem = selectedItem.Substring(1); ' bu kodu yazıp çalıştırdığımda bilgileri girdikten sonra kaydet butonuna bastıktan sonra şöyle bir hata veriyor: "startIndex cannot be larger than lenght of string.

            parameter name:startIndex"

Bunu silip çalıştırdığımda da kaydediyor ancak hobiler alanı null olarak görünüyor. :s

Ek olarak belirttiğim kodun tam olarak ne işe yaradığını da açıklarsanız çok sevinirim.


 

 
Gönderildi : 22/06/2011 20:56

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Bunu denermisin.

String selectedItem = string.Empty;
    foreach (ListItem item in CheckBoxList1.Items)
    {
        if (item.Selected)
        {
            string.Format(selectedItem, ",", item.Text);
        }
    }

    if (selectedItem != string.Empty)
    {
        selectedItem = selectedItem.Substring(1);
    }

 

Saygılar,

 
Gönderildi : 23/06/2011 12:29

(@EbruBulgan)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

Denedim,hata vermedi bu sefer. Kayıtları girip çalıştırdıktan sonra Hobiler alanı yine null ve iki tane checkbox seçtiğimden ötürü aynı kaydı 2 kere kaydetmiş. :S

 
Gönderildi : 23/06/2011 12:58

(@EbruBulgan)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

Bir de şöyle denedim;

 for(int i=0;i<CheckBoxList1.Items.Count;i++)
            {
                if (CheckBoxList1.Items[i].Selected == true)
                {

 cmd.Parameters.Add("@Hobies", SqlDbType.VarChar).Value = CheckBoxList1.Items[i].Text.ToString();

                    cmd.ExecuteNonQuery();

               }

          }

 Bunu yazdığımda da mesela ben 3 tane seçtim ancak sadece ilk seçtiğimi alıyor. Bu kodun üzerinden gidecek olursak eğer nasıl bir kod eklemeliyim ki seçtiklerim aynı alanda durabilsin?

 
Gönderildi : 23/06/2011 13:46

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba,

Bunu denermisin.

String selectedItem = string.Empty;
foreach (ListItem item in CheckBoxList1.Items)
{
    if (item.Selected)
    {
        **selectedItem += "," + item.Text;**
    }
}

if (selectedItem != string.Empty)
{
    selectedItem = selectedItem.Substring(1);
}

** selectedItem +=  unutmuşum 🙂

Saygılar,

 
Gönderildi : 23/06/2011 14:52

(@EbruBulgan)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

Verdiğiniz örneği sorunumu çözdükten sonra gördüm. =) Yinede teşekkür ederim notlarım arasına alacağım. =)

Ben çalıştırdığım koduda yazayım, aynı problemi yaşayan arkadaşlara yardımcı olabilir.

 string iHoobies = "";

            for(int i=0;i<CheckBoxList1.Items.Count;i++)
            {
                if (CheckBoxList1.Items[i].Selected == true)
                {

                   iHoobies+= CheckBoxList1.Items[i].Text.ToString() + " , " ;
 

Tekrar teşekkürler. =)                 
                   
                }
           
            }

 
Gönderildi : 23/06/2011 16:51

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Sorunun çözüldüğüne sevindim.Ayrıca ileriye dönük başka kodlarla ilgili herhangi bir sorun olursa,geri dönüş yapabilirsin.

 
Gönderildi : 23/06/2011 17:00

(@EbruBulgan)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

Emin olabilirsiniz, iş hayatına yeni atıldım ve şu anda eğitim aşamasındayım. Sürekli projeler veriliyor yapmam için, takıldığım yerlerde sağlıklı dönüşler alabileceğim bir site olması benim için de çok iyi oldu.

Tekrar teşekkürler.

 
Gönderildi : 23/06/2011 17:36

Paylaş: