Merhabalar bu makalede ASP.NET 2.0 ve SQL SERVER 2005 kullanarak ürün kataloğunun nasıl hazırlanacağına bakıcaz.Yine her zamanki gibi öncelikle tablomuza bakalım. Aşağıdaki tabloda goruldugu gibi MARKA,MODEL ve KATEGORI tek tabloda tutulmus bunlar ayrı tablolarda da tutulabilirdi hatta daha iyi olurdu fakat bu daha önce yaptığım bir projeden alındığı için ve o projede bu şekilde bir tablo yapısı kullanmam  gerekiyordu.

k1.jpg

Aşağıda tablodaki datalardan birkaçını görnektesiniz.

k6.jpg

Tabloyu kısaca inceledikten sonra şimdi katoloğu hazırlamaya geldi.

Sayfamıza 4 Datalist ekliyoruz bunlardan 1. si Markaların listeleneceği dtListMark ,diğeri seçilem modele listelenen dtListModel,bir diğeri seçilen modele göre listlenen dtListCategory ve son olarakta seçilen kategoriye göre listelenen dtListProducts. Tüm bu kontrolleri de bir UpdatePanel içine alıyoruzki her sorgulama işleminde sayfa postback olmasın.

 k21.jpg

 

<asp:LinkButton ID=”lnkmarka” runat=”server” CommandName=”lnkmarka” CssClass=”lnkDataListMark”

</asp:DataList>

 

Şimdi sayfa ilk yüklendiğinde markalar dtListMark datalistine listelenmelidir. Burada DataAccessLayer kullanılıldığı için Database diye bir sınıf da nereden çıktı diyebilirsiniz.

Mehmet Aydın Ünlü kardeşimin blog sitesini ziyaret ederek ve bu makaleyi okuyarak öğrenebilirsiniz son derece güzel ve faydalı bir makale.

protected void Page_Load(object sender, EventArgs e)

{

fillmark();

{

protected void fillmark()

}

Daha sonra kullanıcı Markalardan birine tıkladığı zaman ilgili markaya bağlı modellleri dtListModel içinde listelememiz lazım.

dtListMark’ın ItemCommand özelliğinde aşağıda kod ile tıklanan markanın ne olduğunu buluyoruz.Daha önce dediğim gibi tüm bilgiler tek tabloda tutuldugu iççin burada markanın Text’ine ulastım eger ayrı bir tabloda tutulsaydı ID’sine erişecektim.

protected void dtListMark_ItemCommand(object source, DataListCommandEventArgs e)

{

LinkButton lb = (e.Item.FindControl(“lnkmarka”) as LinkButton);

lblmark.Text = lb.Text;

fillmodel(lblmark.Text);

panelmodel.Visible = true;

panelcategory.Visible = false;

}

Marka fillmodel() fonsiyonuna akarılıyor ve fillModel ‘de o markaya ait modelleri çekiyor.

k42.jpg

protected void fillmodel(string mark)

{

string constr = ConfigurationManager.ConnectionStrings["strdega"].ToString();

DataBase db = new DataBase(constr);db.AddParameter(“@par_marka”, mark);

DataTable dt = db.RunSPTable(“spFillModel”);

dtListModel.DataSource = dt;

dtListModel.DataBind();

}

Modelleri çeken Stored Procedure

CREATE PROCEDURE [dbo].[spFillModel]

@par_marka nvarchar(50)

AS

BEGIN

SELECT DISTINCT [MODEL] FROM [tbl_Products] WHERE ([MARKA] = @par_marka)

END

ve şimdide dtListModel Datalistine tıklanınca bu modellere ait kategorileri listeleyelim.

protected void dtListModel_ItemCommand(object source, DataListCommandEventArgs e){

panelmodel.Visible = false;

LinkButton lb = (e.Item.FindControl(“lnkmodel”) as LinkButton);

lblmodel.Text = lb.Text;

fillcategory(lblmark.Text, lblmodel.Text);

panelcategory.Visible =true;

}

spFillCategory Stored Procedure ‘u ilede Tüm kategoriler listeleniyor.

CREATE PROCEDURE [dbo].[spFillCategory]

@par_marka nvarchar(50),@par_model nvarchar(50)

AS

BEGIN

SELECT DISTINCT [KATEGORI] FROM [tbl_Products] WHERE ([MARKA] = @par_marka) AND ([MODEL]=@par_model)

END

ve şimdide dtListModel Datalistine tıklanınca bu modellere ait kategorileri listeleyelim.

k52.jpg

protected void dtListModel_ItemCommand(object source, DataListCommandEventArgs e)

{

panelmodel.Visible = false;

LinkButton lb = (e.Item.FindControl(“lnkmodel”) as LinkButton);

lblmodel.Text = lb.Text;

fillcategory(lblmark.Text, lblmodel.Text);

panelcategory.Visible =true;

}

Marka ve Model fillcategory() fonsiyonuna akarılıyor.

protected void fillcategory(string mark, string model)

{

string constr = ConfigurationManager.ConnectionStrings["strdega"].ToString();DataBase db = new DataBase(constr);db.AddParameter(

“@par_marka”, mark);db.AddParameter(“@par_model”, model);

DataTable dt = db.RunSPTable(“spFillCategory”);

dtListCategory.DataSource = dt;

dtListCategory.DataBind();

}

spFillCategory Stored Procedure ‘u ilede Tüm kategoriler listeleniyor.

CREATE PROCEDURE [dbo].[spFillCategory]

@par_marka nvarchar(50),@par_model nvarchar(50)

AS

BEGIN

SELECT DISTINCT [KATEGORI] FROM [tbl_Products] WHERE ([MARKA] = @par_marka) AND ([MODEL]=@par_model)

END

Ve son olarak dtListCategory’ ye tıklanınca Ürün ile biligileri dtListProducts Datalistinde listelemeye geldi.

protected void dtListCategory_ItemCommand(object source, DataListCommandEventArgs e)

{

panelcategory.Visible =true;

panelProducts.Visible = true;

LinkButton lb = (e.Item.FindControl(“lnkcategory”) as LinkButton);

lblcategory.Text = lb.Text;

fillproducts(lblmark.Text, lblmodel.Text, lblcategory.Text);

}

protected void fillproducts(string mark, string model, string category)

{

string constr = ConfigurationManager.ConnectionStrings["strdega"].ToString();

DataBase db = new DataBase(constr);db.AddParameter(“@par_marka”, mark);

db.AddParameter(“@par_model”, model);db.AddParameter(“@par_category”, category);DataTable dt = db.RunSPTable(“spFillProducts”);

dtListProducts.DataSource = dt;

dtListProducts.DataBind();

}

spFillProducts Stored Procedure ‘u ilede o marka ,model ve kategoriye ait ürünler listeleniyor.

CREATE PROCEDURE [dbo].[spFillProducts]

@par_marka nvarchar(50),@par_model nvarchar(50),@par_category nvarchar(50)

AS

BEGIN

SELECT * FROM [tbl_Products] WHERE (([MARKA] = @par_marka) AND ([MODEL] = @par_model) AND ([KATEGORI]= @par_category))

END

k72.jpg

Etiketler : Etiket Yok
Kategoriler : ASP .NET
Yorumlar : 0 Yorum Yorum Yaz

Yorumlar

Yorum Eklenmemiş...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *
 
Arama
  Ara
Dil Seçin
Sayfalar
Son Yorumlar
Sayfalar
Blog Sayaç
Tag Bulutu