PDA

View Full Version : جستجو در کل دیتابیس و نمایش نتایج جستجو در صفحات متفاوت



b.paseban
سه شنبه 12 بهمن 1389, 15:22 عصر
با عرض سلام خدمت دوستان.
من میخواهم داخل دیتابیسم توی بعضی از جداول یک سری فایل رو جستجو کنم و اونها رو نمایش بدم.

دستور sql:



ALTER PROCEDURE [dbo].[Searchtbls]
@keyword Nvarchar(300)
AS
SELECT Article_Article.Title , Article_Article.ArticleID
FROM Article_Article
WHERE (Article_Article.Title LIKE N'%' + @keyword + N'%')
UNION
SELECT News_News.Title , News_News.NewsID
FROM News_News
WHERE (News_News.Title LIKE N'%' + @keyword + N'%')
UNION
SELECT MultimediaNews_category.Title , MultimediaNews_category.CategoryID
FROM MultimediaNews_category
WHERE (MultimediaNews_category.Title LIKE N'%' + @keyword + N'%')
RETURN


حالا وقتی من این مقادیر رو بر میگردونم میخوام نمایش بدم به یه مشکل برمی خورم اونم اینه که واسه نمایش کامل متن فیلد های انتخاب شده چطوری باید مقادیر رو از هم تفکیک کنم.مثلا توی hyperlink که میخوام توی صفحه قرار بدم آدرس صفحه فیلد انتخواب شده رو بزارم.مثلا برای NewsID آدرس صفحه ای که اخبار قرار داره رو بزارم و واسه ArticleID صفحه مربوطه به اون رو.



<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#"Article.aspx?ID="+Eval("ArticleID")%>' Text='<%#Eval("Title")%>'></asp:HyperLink>

مهدی کرامتی
سه شنبه 12 بهمن 1389, 16:11 عصر
ساده ترین راه حل ممکن حل کردن این قضیه در Stored Procedure فوق است. در Stored Procedure فوق یک ستون به نام PageName در هر یک از Query ها اضافه کنید:

ALTER PROCEDURE [dbo].[Searchtbls]
@keyword Nvarchar(300)
AS
SELECT 'ShowArticle.aspx' AS PageName, Article_Article.Title , Article_Article.ArticleID
FROM Article_Article
WHERE (Article_Article.Title LIKE N'%' + @keyword + N'%')
UNION
SELECT 'ShowNews.aspx' AS PageName,News_News.Title , News_News.NewsID
FROM News_News
WHERE (News_News.Title LIKE N'%' + @keyword + N'%')
UNION
SELECT 'ShowMultimediaNews.aspx' AS PageName,MultimediaNews_category.Title , MultimediaNews_category.CategoryID
FROM MultimediaNews_category
WHERE (MultimediaNews_category.Title LIKE N'%' + @keyword + N'%')
RETURNو در Hyperlink مشخصه NavigateUrl به شکل زیر تغییر دهید:

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("PageName").ToString() + "?ID="+Eval("ArticleID").ToString() %>' Text='<%#Eval("Title")%>'></asp:HyperLink>

در مثال فوق فرض شده است نام صفحات نمایش دهنده مطالب شما به ترتیب


ShowArticle.aspx
ShowNews.aspx
ShowMultimediaNews.aspx

است و همگی یک پارامتر به نام ArticleID دارند که به شماره ردیف مورد نظر در دیتابیس اشاره می کند.

b.paseban
سه شنبه 12 بهمن 1389, 16:35 عصر
WOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:متعجب::مت عجب::متعجب: