Bu başlığı en iyi anlatacak örnek il-ilçe örneği olacaktır il-ilçe örneği ile önce il seçilmesini sağlayıp daha sonra seçilen ilin ilçelerini dökmek için kullanacağımız kademeli veya belirttiğimiz gibi birbirini takip eden Dropdownlist nesneleri oluşturmayı göreceğiz.
Birbirini takip eden Dropdownlist nesneleri oluşturma
Bu örneğimizde Ülke – İl – İlçe olarak birbirini takip eden dropdownlist nesneleri oluşturacağız.
Kullanacağımız tablolar
Tablo Adı | Açıklama |
---|---|
tblUlke | Ülkelerin bulunduğu tablo |
tblil | İllerin bulunduğu tablo |
tblilce | İlçelerin bulunduğu tablo |
Şimdi Ülke – İl – İlçe için kullanılacak stored procedure’leri hazırlayalım
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | Create Procedure spUlkeler as begin select ulkeid, ulkeadi from tblUlke end Create Procedure spIllerUlkeidIle @ulkeid int as begin select ilid, iladi from tblil where ulkeid = @ulkeid end Create Procedure spIlcelerIlidIle @ilid int as begin select ilceid, ilceadi from tblilce where ilid = @ilid end |
Stored Procedure’lardan hızlıca veri almak için kullanacağımız GetData Metodumuz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private DataSet GetData(string spName, SqlParameter param) { var constr = ConfigurationManager.ConnectionStrings["MHG"].ConnectionString; SqlConnection con = new SqlConnection(constr); SqlDataAdapter da = new SqlDataAdapter(spName, con); da.SelectCommand.CommandType = CommandType.StoredProcedure; if (param != null) { da.SelectCommand.Parameters.Add(param); } DataSet ds = new DataSet(); da.Fill(ds); return ds; } |
GetData metodunu Sayfanın Page_Load’inda alltaki şekilde kullanıyoruz.
1 2 3 4 5 6 7 | if (!IsPostBack) { DdlUlke.DataTextField = "ulkeadi"; DdlUlke.DataValueField = "ulkeid"; DdlUlke.DataSource = GetData("spUlkeler", null); DdlUlke.DataBind(); } |
Üstteki örnek kodumuzda gördüğünüz gibi Ülkeler’in listesini GetData metoduyla almak istediğimizde hatırlarsanız spUlkeler adlı Stored procedure’da herhangi bir parametre geçmek durumunda değildik o yüzden null olarak geçiyoruz.
Şimdi ise hem Ülke hemde il Dropdownlist’lerinin SelectedIndexChange event’lerinde verileri çekeceğimiz kodları yazalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | protected void DdlUlke_OnSelectedIndexChanged(object sender, EventArgs e) { SqlParameter param = new SqlParameter("ulkeid",DdlUlke.SelectedValue); Ddlil.DataTextField = "iladi"; Ddlil.DataValueField = "ilid"; Ddlil.DataSource = GetData("spIllerUlkeidIle", param); Ddlil.DataBind(); } //İller dropdownlist'i değiştiğinde çalışacak event protected void Ddlil_OnSelectedIndexChanged(object sender, EventArgs e) { SqlParameter param = new SqlParameter("ilid",Ddlil.SelectedValue); Ddlilce.DataTextField = "ilceadi"; Ddlilce.DataValueField = "ilceid"; Ddlilce.DataSource = GetData("spIlcelerIlidIle", param); Ddlilce.DataBind(); } |