Doğru Cevap
-
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
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
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
çö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
-
az once iki tablo olusturup denedim. kodlari paylasıyorum kendine göre uyarlarsın artık...,
Makale TablosuCREATE 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ınCREATE 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
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 gibi9 yıl önce yazılmış -
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 yapabilirm9 yıl önce yazılmış
-