با سلام و خسته نباشید خدمت شما
من قصد دارم سایتی مانند http://ibazaryabi.com را بنویسم و برای هر مطلب قصد دارم تگ داشته باشم که بعدا از طریق تگها مطالب هم نوع سرچ شوند.
برای این کار نیز از دو جدول tagGroup, tag استفاده کردم که باید با جدول article که مقالات در آن موجود هستن با یک جدول واسط در ارتباط هستن استفاده کردم
آیا روشی که استفاده میکنمم روش درستیه؟
موقع ویرایش کردن تگها دچار مشکل میشم چون تعداد جداول و ارتباط بین آنها زیاد است
میشه راهنمایی کنین برای ایجد تگ بهترین روش چیه؟
با تشکر
روش مشکلی نداره
برای ویرایش میتونید اول تمام تگ های مربوط به این مطلب رو حذف کنید و سپس دوباره ثبت کنید
مرسی از راهنماییتون.
میشه راهنماییم کنین که کد زیر را چطوری باید تغییر بدم تا مجموعه تگها را نمایش بده؟
چون هر مطلب چندین تگ داره و باید برای آن یک foreach نوشت منتها نمیدونم این کار را چطوری در یک query بنویسم؟
و سوال دومم این است که آیا میتونم باید تغییری در html بدم؟(<%# Eval("TagTitle") %>)
var query = (from x in Mybank.TblArticleTags
join y in Mybank.TblTags
on x.TagID equals y.TagID
from a in Mybank.TblArticleTags
join b in Mybank.TblArticles
on a.ArticleID equals b.ArticleID
where b.ArticleGroupID == 3 && a.ArticleID == b.ArticleID && x.TagID == y.TagID
select new
{
b.Auther,
b.Date,
b.Disc,
b.Pic,
b.See,
b.Summery,
b.Title,
x.TagTitle
}).ToList();
ListView1.DataSourceID = null;
ListView1.DataSource = query;
ListView1.DataBind();
در کوئری نباسد انجام بدید
باید به صورت جداگانه بدست بیارید و در صفحه به صورت تگ a قرار دهید
یعنی بخش تگ را از لیست ویو خارج کنم؟
میتونید اینکار را کنید و یا داخل ListView یک Repeater قرار دهید
ممنونم از راهنماییتون.
طبق توضیحاتتون از دو تا repeater تودرتو استفاده کردم و با قطعه کدی که نوشتم آنها رو پر کردم.
منتها ی ایرادی داره.
مثلا اگر مقاله 2 تا تگ داشته باشه دوبار مقاله تکرار میشه.
تو شرطم چه تغغیری باید بدم تا این مشکل حل شه؟
چون ریپیترها تو در تو هستن نمیتونم دو تا کوعری جدا بزنم چون ریپیتر دوم را نمیشناسه که بهش دیتاسورس بدم.
به نظرم یک foreach لازم داره اما نمیدونم اینجا چطوری اینکار رو بکنم؟
var items = (from c in Mybank.TblArticles
join d in Mybank.TblArticleTags
on c.ArticleID equals d.ArticleID
where (d.ArticleID == c.ArticleID) && (c.ArticleGroupID == 3)
select new
{
catid = c.ArticleID,
pic = c.Pic,
Auther = c.Auther,
Title = c.Title,
Summery = c.Summery,
Date = c.Date,
post = (from p in Mybank.TblArticleTags
join q in Mybank.TblTags
on p.TagID equals q.TagID
where (p.ArticleID == d.ArticleID)
select new
{
ptitle = p.TagTitle
})
});
Repeater1.DataSource = items;
Repeater1.DataBind();
شما باید جداگانه کوئری بزنید
الان از روش join استفاده کردید اکه این روش Inner Join هست و تکرار میشه
یا میتونید در همین کوئری کلمات کلیدی را به صورت لیست برگردونید و در صفحه به یک Repeater وصل کنید
منظورتون کوئری دومه؟
اون رو به صورت لیست بنویسم؟
این لینک رو ببینید
ممنون از راهنماییتون منتها فایل ضمیمه شده در این لینک مرتبط به موضوع نیست و روش سرچ کردنه
فقط میخواستم روشپیاده سازی رو ببینید و از اون ایده بگیرید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)