Asp.Net Sınırsız Kategori Oluşturma Ekleme
3059 görüntüleme

Merhaba Arkadaşlar,

Sınırsız sayıda kategori ve alt kategori ekleme işlemini yapacağız. istediğiniz kadar ana kategori ve alt kategori oluşturma işlemi için stored procedure kullanacağız.

öncelikle veri tabanımızı oluşturalım

tabloyu oluşturduktan sonra stored procedure ümüzü oluşturalım..

CREATE PROCEDURE [dbo].[sp_Kategoriler]
@K_id int = null,
@K_Adi nvarchar(max) = null,
@K_Ustid int = null,
@Islem nvarchar(max) = null
AS
BEGIN
	
	SET NOCOUNT ON;

	if(@Islem = 'KategoriEkle')
	begin
	insert into V_Kategoriler (K_Adi, K_Ustid) values (@K_Adi, @K_Ustid)
	end
	
	if(@Islem = 'KategorilerGetir')
	begin
	select * from V_Kategoriler
	end
	
	
END

GO

 

prosedürümüzde iki işlem yapacağız birincisi Kategori ekleme ikincisi ise dropdownliste doldurma bunun için iki sql cümleciği yazdım

şimdi aspx sayfamıza bir textbox bir dropdownlist ve bir de buton ekleyelim.

<asp:TextBox ID="txtKatAdi" runat="server"></asp:TextBox>

 <asp:DropDownList ID="ddlAna" runat="server" >
            </asp:DropDownList>

<asp:Button ID="btnKaydet" runat="server" Text="Kaydet"  onclick="btnKaydet_Click" />

bu üç objeyi siz kendi tasarımınıza göre yerleştirin ben sadece görmeniz için direk yazdım dropdownlist in id si ddlAna olarak değiştirdim.

şimdi c# kodlarımıza geçelim 

DataTable DT;
 protected void Page_Load(object sender, EventArgs e)
    {
       

        if (!Page.IsPostBack)
        {
            dtdoldur();
   // dropdownlisti doldurmak için 

        
        }
    }




  private void dtdoldur()
    {
         SqlConnection Sqlbaglantisi = new SqlConnection("data source=VeriTAbanı;initial catalog=VeriTAbanıAdı;user id=KullanıcıAdı;password=Şifre");
        
//burayı siz kendinize göre düzeltin

            Sqlbaglantisi.Open();

        SqlCommand SqlKomutu = new SqlCommand("dbo.sp_Kategoriler", Sqlbaglantisi);
        SqlKomutu.CommandType = System.Data.CommandType.StoredProcedure;
        SqlKomutu.Parameters.AddWithValue("@Islem", "KategorilerGetir");

//veri tabanı bağlantısını yapıp KategorilerGetir prosedürünü çalıştırıyoruz
//DataTable ile gelen veriyi alalım.

        DT = new DataTable();
        SqlDataAdapter Adapter = new SqlDataAdapter(SqlKomutu);

        Adapter.Fill(DT);


        SqlKomutu.Dispose();
        Sqlbaglantisi.Close();
        Sqlbaglantisi.Dispose();

        ddlAna.Items.Clear();
       
//Gösterim sırasında ilk olarak Ana Kategori gözükmesi ve üst id mizin boş olma durumu için      

        ddlAna.Items.Insert(0, new ListItem("Ana Kategori", "0"));
        DataRow[] RootRows = DT.Select("K_Ustid IS NULL");
        DDLDoldur(DT, RootRows, "");

       
     
    }


//dropdownliste verileri istediğimiz şekilde dolduralım.

    protected void DDLDoldur(DataTable __table, DataRow[] drc, string girinti)
    {
        foreach (DataRow dr in drc)
        {

            ListItem li = new ListItem();
            li.Text = girinti + dr["K_Adi"].ToString();
            li.Value = dr["K_id"].ToString();
            DataRow[] RootRows = DT.Select("K_Ustid=" + dr["K_id"]);


            ddlAna.Items.Add(li);

            DataRow[] SubRows = DT.Select("K_Ustid = " + dr["K_id"].ToString());
            DDLDoldur(__table, SubRows, girinti + "-->");

           
        }
    
    }



//textbox a yazılan kategoriyi kaydedelim 

  protected void btnKaydet_Click(object sender, EventArgs e)
    {
                 SqlConnection Sqlbaglantisi = new SqlConnection("data source=VeriTAbanı;initial catalog=VeriTAbanıAdı;user id=KullanıcıAdı;password=Şifre");
        
//burayı siz kendinize göre düzeltin

            Sqlbaglantisi.Open();

        SqlCommand SqlKomutu = new SqlCommand("dbo.sp_V_Kategoriler", Sqlbaglantisi );
        SqlKomutu.CommandType = System.Data.CommandType.StoredProcedure;
        SqlKomutu.Parameters.AddWithValue("@Islem", "KategoriEkle");

//kategoriekle sqlini çalıştırıyoruz

        SqlKomutu.Parameters.AddWithValue("@K_Adi", txtKatAdi.Text);
//eğer ana kategori seçilmişse üst kategori id si null olacaktır.
        if (ddlAna.SelectedIndex == 0)
        {
            SqlKomutu.Parameters.AddWithValue("@K_Ustid", null);
        }
        else
        {
değilse alt kategoridir o zaman seçilen kategorinin id sini alacağız
            SqlKomutu.Parameters.AddWithValue("@K_Ustid", ddlAna.SelectedValue);
        }

        SqlKomutu.ExecuteNonQuery();

        SqlKomutu.Dispose();
        Sqlbaglantisi .Close();
        Sqlbaglantisi .Dispose();
    }

 

artık istediğimiz kadar iç içe kategori ekleyebilmekteyiz.

 

 

takıldığınız yerler olursa sorabilirsiniz. 

bir sonraki makalede görüşmek dileğiyle ...

Veysel APARI

Bildiklerimizi paylaşıyoruz, bilmediklerimizi öğreniyoruz.
biz bunları yapıyoruz ya siz...
© 2016 Bildiklerimiz.Net Tüm hakları saklıdır.