Şimdi Ara

İl ve İlçe Bilgilerini DropDownList'e Seçili Olarak Getirmek (Null Hatası Alıyorum)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
1.051
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar. Ufak bir sorun ile karşı karşıyayım ve bir türlü çözüm bulamadım. Aşağıda detaylı bir şekilde her şeyi açıklayacağım yardımcı olabilirseniz çok sevinirim.

    tbl_Kullanici tablosu;

    kullaniciid int [PK],
    - eposta nvarchar(50),
    - sifre nvarchar(50),
    - il int,
    - ilce int

    tbl_Il tablosu;
    - il_no int [PK],
    - il_isim nvarchar(50)

    tbl_Ilce tablosu;
    - ilce_no int,
    - ilce_isim nvarchar(50),
    - il_no int
    alanlarını içermekte.

    Şuan yapıyor olduğum ve yapmak istediğim şeyler ise şu şekilde:

    - Kullanıcı kayıt formunda tüm il ve ilçe verilerini DropDownListIl ve DropDownListIlce kısımlarına çekiyorum. Kullanıcı hangi ili seçerse o ile bağlı olan ilçeler ilgili DropDownList'te görünüyor.
    - Kullanıcı kayıt formunu doldurup kayıt olduktan sonra tbl_Kullanici tablosundaki "il" ve "ilce" alanlarına kullanıcının seçmiş olduğu il ve ilçeyi sayısal bir değer olarak kaydediyorum (örnek olarak Ankara'yı seçtiyse il kısmına 6, Çankaya'yı seçtiyse ilçe kısmına 216 şeklinde).
    - Yapmak istediğim şey ise şu: Kullanıcı "adres-bilgilerim.aspx" sayfasına geldiği zaman kullanıcının kayıt formunda seçmiş olduğu il ve ilçelerin DropDownList'lerde seçili olarak gelmesini ve DropDownList'lere bastığı zaman diğer tüm il ve ilçelerin de orada gözükmesini istiyorum.

    Şu ana kadar sadece il kısmını seçili olarak getirebildim fakat ilçe kısmında hata alıyorum. Kodlarım ise aşağıdaki gibidir:

    Fonksiyon function = new Fonksiyon();
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!IsPostBack)
    {
    IlCek();
    IlceCek();
    vericek();
    }
    }

    // Kullanıcı tablosundaki il ve ilçenin seçili gelmesini sağlayacak metot (sadece il seçili geliyor ilçe için null hatası veriyor).
    private void vericek()
    {
    if (Session["kullaniciid"] != null)
    {
    DataRow drbilgi = function.GetDataRow("SELECT tbl_Il.il_no, tbl_Ilce.ilce_no, tbl_Il.il_isim, tbl_Ilce.ilce_isim FROM kullanici LEFT JOIN tbl_Il on tbl_Il.il_no = tbl_Kullanici.il LEFT JOIN tbl_Ilce on tbl_Ilce.ilce_no = tbl_Kullanici.ilce WHERE kullaniciid=" + Session["kullaniciid"].ToString());
    if (drbilgi == null)
    {
    Response.Redirect("default.aspx");
    }
    else
    {
    DrpDwnLstIl.ClearSelection();
    DrpDwnLstIl.Items.FindByValue(drbilgi[0].ToString()).Selected = true;
    DrpDwnLstIlce.ClearSelection();
    DrpDwnLstIlce.Items.FindByValue(drbilgi[1].ToString()).Selected = true;
    }
    }
    else
    {
    Response.Redirect("default.aspx");
    }
    }

    // Tüm illeri çektiğim metot.
    private void IlCek()
    {
    SqlConnection conn;
    SqlCommand comm;
    SqlDataReader reader;
    string connectionString = ConfigurationManager.ConnectionStrings["aytasarimConnectionString"].ConnectionString;
    conn = new SqlConnection(connectionString);
    comm = new SqlCommand("SELECT * FROM tbl_Il", conn);
    try
    {
    conn.Open();
    reader = comm.ExecuteReader();
    DrpDwnLstIl.DataSource = reader;
    DrpDwnLstIl.DataValueField = "il_no";
    DrpDwnLstIl.DataTextField = "il_isim";
    DrpDwnLstIl.DataBind();
    reader.Close();
    }
    catch
    {
    string mesaj = "<script>alert('Bir hata oluştu!');</script>";
    Response.Write(mesaj);
    }
    finally
    {
    conn.Close();
    }
    }

    // Tüm ilçeleri çektiğim metot.
    private void IlceCek()
    {
    SqlConnection conn;
    SqlCommand comm;
    SqlDataReader reader;
    string connectionString = ConfigurationManager.ConnectionStrings["aytasarimConnectionString"].ConnectionString;
    conn = new SqlConnection(connectionString);
    comm = new SqlCommand("SELECT * FROM tbl_Ilce WHERE il_no='" + DrpDwnLstIl.SelectedValue + "'", conn);
    try
    {
    conn.Open();
    reader = comm.ExecuteReader();
    DrpDwnLstIlce.DataSource = reader;
    DrpDwnLstIlce.DataValueField = "ilce_no";
    DrpDwnLstIlce.DataTextField = "ilce_isim";
    DrpDwnLstIlce.DataBind();
    reader.Close();
    }
    catch
    {
    string mesaj = "<script>alert('Bir hata oluştu!');</script>";
    Response.Write(mesaj);
    }
    finally
    {
    conn.Close();
    }
    }

    protected void DrpDwnLstIl_SelectedIndexChanged(object sender, EventArgs e)
    {
    IlceCek();
    }


    vericek() metodunun DrpDwnLstIlce.Items.FindByValue(drbilgi[1].ToString()).Selected = true; satırında null hatası alıyorum. İl'i seçili olarak getirebiliyorum ve bastığımda diğer tüm iller de DropDownList'in içerisinde oluyor fakat ilçe için aynısı olmuyor. Yardımcı olabilecek varsa çok sevinirim.



    < Bu mesaj bu kişi tarafından değiştirildi Shadouspan -- 15 Eylül 2017; 12:41:52 >







  • Hocam veritabanında join ile sorgu yapıp çalıştırınca herhangi bir hata alıyormusunuz?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: el-harezmi_0

    Hocam veritabanında join ile sorgu yapıp çalıştırınca herhangi bir hata alıyormusunuz?

    Denedim fakat herhangi bir hata almadım. Neden Null geldiğini buldum fakat çözümünü bir türlü bulamadım. IlceCek() metodundaki SQL sorgusunu "SELECT * FROM tbl_Ilce WHERE il_no='" + DrpDwnLstIl.SelectedValue + "' yerine "SELECT * FROM tbl_Ilce" şeklinde değiştirdiğim zaman (yani filtrelemeyi kaldırdığım zaman) kullanıcı tablosuna kaydetmiş olduğum ilçeyi de seçili olarak getiriyor fakat buradaki sorun; DropDownList'e tüm ilçeleri getiriyor yani filtreleme yapmıyor. Mesela kayıt olurken il olarak Ankara, ilçe olarak ise Çankaya seçtim diyelim. Sayfaya gittiğimde il kısmında Ankara'nın seçili gelmesi, ilçe kısmında ise Çankaya'nın seçili gelmesi fakat ilçelere bastığımda sadece Ankara'ya bağlı olan diğer ilçeleri görmem gerekirken. Kodu bahsettiğim şekilde değiştirince veritabanında bulunan tüm ilçeler arasından Çankaya'yı seçiyor. Orada ufak bir değişiklik yapsam sorun çözülecek sanki fakat bir türlü bulamadım, çıkmaza girdim.

    Edit: Sorun aslında tam olarak şu. Mesela il olarak Ankara'yı seçili bir şekilde getiriyor fakat kod onu tıklanmamış olarak gördüğü için Ankara'ya bağlı olan ilçeleri DropDownListIlce'ye yükleyemiyor. Dolayısıyla onu null olarak görüyor ve IlceCek() metodunun WHERE sorgusunda patlıyor, yani SelectedValue kısmında. Çünkü onu seçili gibi görmüyor.



    < Bu mesaj bu kişi tarafından değiştirildi Shadouspan -- 15 Eylül 2017; 15:40:6 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.