Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Asp.net Etiketle veritabanı sorunu?

Arkadaşlar veritabanımdan makalelerimi çekiyorum ve bu makalelere bağlı etiketler var ayrı bir Etiket tablosunda.. Listview de de Gösteriyorum..Ancak Hem makaleyi getirip hemde o makaleye ait etiketleri nasıl yazdıracağımı bulamadım yani.. 1 makale var.. bu makaleye ait 3 makale var join le birleştirsen.. makaleyi 3 defa yazıp etiketleri yanına yazıyor yani
makale1  Sanat,
makale1  Kültür,
makale1  Sanat2,


Eval("Etiket") yapınca da son etiketi yazıyor.. Sanat2 yi yani.. Bu etiketleme olayını veritabanı ile yapabilecğim bi örnek verebilrmisiniz ya da bundaki problemi çözebilirmiyim!
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • huseyn adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    42 cevap - 0 soru
    izlediğiniz yol yanlış. asp.net bilgim yok fakat bir yorum yapabilirim. o anasayfada kullandığınız dataset in her bir item ı için çalışacak bir event var mı? eğer varsa her item yüklendiğinde o item a ait etiketleri db den alabilirsin. eğer böyle bir event yoksa tek sorgu ile istediğin sonucu alamazsın. ya aynı makaleyi etiket sayısı kadar getirir ya da en son etiketi getirir. ya da şöyle bir yöntem uygulanabilir. sayfa açıldığında makalelere ait etiketleri getiren bir sorgu daha çalıştırırsın. bu sorgunun sonucunu session yada statik bir datatable a (her zaman ulaşabileceğin bir yere artık neyse) atarsın. dataset i doldururken de çektiğin etiket bilgileriyle birlikte doldurursun.
    • psygnosis adlı üyenin fotoğrafı psygnosis
      itemdatabound ve itemcreated eventleri var datalistin ama.. şöyle bi sıkıntı olacak.. hadi orda aldım makale idsini istedim o makaleye ait etiketleri o datalistte nası eklicem tekrar ?
      9 yıl önce yazılmış
    • huseyn adlı üyenin fotoğrafı huseyn
      datalistin itemlarına control eklenemiyor mu? eğer eklenebiliyorsa her makale için birer label ekleyip bu labelda da etiketleri gösterebilirsiniz.
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      çözümü kendi çabalarımla buldum sonunda yardımcı olabilir aynı sorunla karşılaşanlara.. vereyim kod yapısını
      string yeniveri = "";
                  if (e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem) //datalist içinde oldugundan item yada alternating item olup olmadıgını kontrol ettim..
                  {
                      Literal lt = (Literal)e.Item.FindControl("ltrEtiket"); //html etiketi alabilen Literal kontrolünü yakaladım datalist içindeki
                      string[] veriler = lt.Text.Split(','); // literalin değerini virgülle split edip bi diziye attım..
                      foreach (var item in veriler) //dizinin içinde foreach ile dönüp her veriye ulaşıyorum
                      {
                          yeniveri += "<a>" + item +" "+ "</a>"; // en üstte değeri boş olarak tanımladığımı yeniveri değişkenini anchor oluşturacak şekilde düzenliyorum
      
      
                      }
      
                     
                      lt.Text = yeniveri; // ve literale yeni değerini veriyorum bu kadar kolay gelsin.. yardımlarınız içinde teşekkürler 
      
                  }
      
      9 yıl önce yazılmış

Cevaplar

  • siyahbeyaz adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    472 cevap - 20 soru
    az once iki tablo olusturup denedim. kodlari paylasıyorum kendine göre uyarlarsın artık...,

    Makale Tablosu
    CREATE TABLE [dbo].[Makale](
    	[id] [int] IDENTITY(1,1) NOT NULL,
    	[Baslik] [nvarchar](150) NULL,
    	[Aciklama] [ntext] NULL,
    	[Tarih] [datetime] NULL,
     CONSTRAINT [PK_Makale] PRIMARY KEY CLUSTERED 
    (
    	[id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    
    GO
    



    etiketler tablosu ıcın
    CREATE TABLE [dbo].[Etiketler](
    	[EtiketlerID] [int] IDENTITY(1,1) NOT NULL,
    	[MakaleID] [int] NULL,
    	[Etiket] [nvarchar](250) NULL,
     CONSTRAINT [PK_Etiketler] PRIMARY KEY CLUSTERED 
    (
    	[EtiketlerID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    
    



    SELECT M.id,M.Baslik,M.Tarih, CAST(M.Aciklama AS nvarchar(500)), COUNT(E.MakaleID) AS ToplamEtiket
    FROM Etiketler AS E
    inner join Makale AS M
    ON M.id=E.MakaleID
    GROUP BY M.Baslik, M.Tarih, M.id, CAST(M.Aciklama AS nvarchar(500))
    


    cast m.aciklama ntext ten nvarchar a cevi,riorm. sql text, ntext, image ... bazı field türlerinin gruplamasına izin vermior onun ıcın fieldi gecici olarak dönüstürmeni ister...
    • psygnosis adlı üyenin fotoğrafı psygnosis
      benim istediğim bu deil bu makaleleri ve o makaleye ait toplam etiket sayısını döndürüyor. ben makaleyle beraber etiketleri döndürsün istiyorum. Etiketler 3 tane oldugu için her etiketin yanın aynı makaleyi döndürüyor. Datalistte basarkende ben etiketleri yanyana virgüllerle yazsın istiyorum ama hep sonuncu etiketi yazıyor...ajax json ile yapılacak başka çare yok gibi
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      biraz daha açayım anasayfada makaleleri datalistte alt alta yazıyorum.. her makaleninnde altında o makaleye ait etiketler yazsın istiyorum nasıl yapabilirm
      9 yıl önce yazılmış