PDA

View Full Version : هایلایت شدن نتایج جستجو



xxxsenatorxxx
یک شنبه 14 خرداد 1391, 09:08 صبح
با سلام
چجوری کلمه جستجو شده در نتایج سرچم هایلایت بشه؟؟؟
نکته : نتایج جستجوم با ریپیتر از دیتا بیس نمایش داده میشه.
چی تو خط سوم کد اچ تی ام الم اضافه کنم یا اصلا کجاشو کلا تغییر بدم؟؟؟
لطفا کد بدید
ممنون

این کد منه تو اچ تی ام ال:
<asp:Repeater ID="Repeater1" runat="server" >

<ItemTemplate>
<span style='background-color: yellow; font-weight: bold; color: #000;'> </span>

<div style=" width:100%; margin:0px 0px 0px 0px; text-align:justify;
height:150px; " dir="rtl">
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/folder close red.ico" />

<a href='<%# "View.aspx?Id="+Eval("ID")%>'style="font-size:medium;
font-family: 'Times New Roman', Times, serif;
text-decoration: none; font-weight: bold;"
target="_blank" dir="rtl"> <%#Eval("Title") %></a>
<br /> <br />

<a style="font-size:small; text-align:justify; font-weight: normal;
font-family: 'Times New Roman'; color: #000000; " dir="rtl">
<%# Eval("Description1")%> </a>

</div>

</ItemTemplate>
</asp:Repeater>

اینم کد سی شارپش:
public void se(string id)
{
SqlConnection Con = new SqlConnection(strCon);
SqlCommand Cmd = new SqlCommand("Select top 3 * From ch where Title Like N'%'+@id+'%' OR Description1 Like N'%'+@id+'%' ", Con);
Cmd.Parameters.AddWithValue("@id",id);
Con.Open();
Repeater1.DataSource = Cmd.ExecuteReader();
Repeater1.DataBind();
Con.Close();
}


protected void Button1_Click(object sender, EventArgs e)
{
se(TextBox1.Text);


}

fakhravari
یک شنبه 14 خرداد 1391, 22:51 عصر
دوستان مثل نتایج جستجو سایت برنامه نویس که کلمات با رنگ زرد نمایش میده .
اگر ممکن دوستان سمپلی قرار بدن.
من چنتا پست زدم و نمونه کارشم گزاشتم اما متاسفانه دنبالشو نگرفتم

hezare
دوشنبه 15 خرداد 1391, 01:10 صبح
پشت فرمتون این کد :


if (Request.QueryString["keyword"] != null)
{
Search Osearch = new Search();
Label_Body.Text = Osearch.HighlightKeywords(Label_Body.Text, Request.QueryString["keyword"]);
}


استفاده از
-------------------------------------------------
using System.Text.RegularExpressions;

فراموش نشه

متدش :

public string HighlightKeywords(string input, string keywords)
{

if (input == string.Empty || keywords == string.Empty)
{
return input;
}

string[] sKeywords = keywords.Split(' ');
foreach (string sKeyword in sKeywords)
{
try
{
input = Regex.Replace(input, sKeyword,
string.Format("<span class=\"SearchHighLight\">{0}</span>", "$0"), RegexOptions.IgnoreCase);
}
catch
{
//
}
}
return input;

}

fakhravari
دوشنبه 15 خرداد 1391, 22:59 عصر
اگر ممکن یه سمپل بزارید

xxxsenatorxxx
سه شنبه 16 خرداد 1391, 10:35 صبح
پشت فرمتون این کد :


if (Request.QueryString["keyword"] != null)
{
Search Osearch = new Search();
Label_Body.Text = Osearch.HighlightKeywords(Label_Body.Text, Request.QueryString["keyword"]);
}


استفاده از
-------------------------------------------------
using System.Text.RegularExpressions;

فراموش نشه

متدش :

public string HighlightKeywords(string input, string keywords)
{

if (input == string.Empty || keywords == string.Empty)
{
return input;
}

string[] sKeywords = keywords.Split(' ');
foreach (string sKeyword in sKeywords)
{
try
{
input = Regex.Replace(input, sKeyword,
string.Format("<span class=\"SearchHighLight\">{0}</span>", "$0"), RegexOptions.IgnoreCase);
}
catch
{
//
}
}
return input;

}


من یک لیبل ساختم با نام لیبل بادی و کد ایف شما رو در باتن گذاشتم ولی هیچ اتفاقی نمی افته!!!!!!؟؟؟؟؟

xxxsenatorxxx
چهارشنبه 17 خرداد 1391, 15:38 عصر
یه کد دیگه هم پیدا کردم ولی باز جواب نمیده!؟؟؟؟؟؟؟؟؟؟؟؟؟؟
لطفا راهنمایی کنید
String(#Eval("Title")).split(id).join('<span style="color:#f00">'+id+'</span>');

xxxsenatorxxx
دوشنبه 22 خرداد 1391, 08:53 صبح
یعنی یک نفر نیست جواب بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟:متعجب::گریه:

ozzy_mra
دوشنبه 22 خرداد 1391, 09:39 صبح
با JQuery انجام بدید
کل صفحه ای که می خواید جستجو توش انجام بشه رو تو یه تگ div با یه آیدی مشخص قرار بدید بعد از روش زیر استفاده کنید : مثلاً آیدی Div شما برابر DivSearch هست
$(function () {
$('#DivSearch:contains("YourText")').css('color', 'yello#');
}
);
البته من خیلی وارد نیستم ولی فکر کنم اگه اینم جواب نده یه سرچی در این زمینه بزنی کارتو جواب بده

xxxsenatorxxx
دوشنبه 22 خرداد 1391, 21:06 عصر
دست اونایی که کمک کردن درد نکنه دست اونایی هم که بی تفاوت بودن درد نکنه.پوستم کنده شد تا پیدا کردم میذارم بقیه هم استفاده کنن
<asp:Label ID="lblfname" runat="server" Text='<%# System.Text.RegularExpressions.Regex.Replace(Eval("Title").ToString(), viewId,"<span style=\"background-color: yellow; \">"+viewId+"</span>") %>'></asp:Label>

TeacherMath
سه شنبه 23 خرداد 1391, 01:13 صبح
public string CapText(Match m)
{
// Get the matched string.
string x = m.ToString();


return "<span class='yellow'>" + x + "</span>";
}
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["highlight"]!=null)
{

string[] highlight = Request.QueryString["highlight"].Split(' ');
string regStr = "";
for (int i = 0; i <= highlight.Length-2; i++)
{
regStr+=highlight[i]+"|";
}
regStr += highlight[highlight.Length - 1];
Regex rx = new Regex(regStr);
Panel.InnerHtml=rx.Replace( Panel.InnerHtml,new MatchEvaluator(CapText));


}
}

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.yellow
{
background-color: #FFFF99;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="Panel" runat="server">
Hello world !
Yellow
</div>

</form>
</body>
</html>

TeacherMath
سه شنبه 23 خرداد 1391, 01:18 صبح
اینم نمونه کد.

TeacherMath
سه شنبه 23 خرداد 1391, 09:11 صبح
ورژن قبلی نمی توانست نقطه را جستجو کند .که مشکل آن رفع شد.

public string CapText(Match m)
{
// Get the matched string.
string x = m.ToString();

return "<span class='yellow'>" + x + "</span>";
}



protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["highlight"]!=null)
{

string[] highlight = Request.QueryString["highlight"].Split(' ');

EscapeRegex(highlight);

string regStr = "";
for (int i = 0; i <= highlight.Length-2; i++)
{
if (highlight[i] == "") continue;
regStr+=highlight[i]+"|";
}
if (highlight[highlight.Length - 1] != "")
{
regStr += highlight[highlight.Length - 1];
}

Regex rx = new Regex(regStr);
if (regStr!="")
{
Panel.InnerHtml = rx.Replace(Panel.InnerHtml, new MatchEvaluator(CapText));
}



}
}

public string EscapeRemover(Match m)
{
// Get the matched string.
string x = m.ToString();
return "\\" + x ;
}
private void EscapeRegex(string[] highlight)
{
string regStrForEscape = @"[\[\\\^\$\.\|\?\&\*\+\(\)\{\}]";
Regex rxEscape = new Regex(regStrForEscape);
for (int i = 0; i < highlight.Length; i++)
{

highlight[i]=rxEscape.Replace(highlight[i], new MatchEvaluator(EscapeRemover));
}
}

fakhravari
چهارشنبه 24 خرداد 1391, 21:33 عصر
فقط یه مشکل دیگه؟
من چطوری باید در کد بهین این پنل را در تمپلیت گرید شناسایی کنم .
من Subject موضوعات را به صورت لینک نمایش میدهم.
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# String.Format("~/Show/Display_PostID.aspx?TopicID={0}&Subject={1}" ,Eval("TopicID"), Eval("Subject")) %>'
Target="_blank">
<%# Eval("Subject")%>
</asp:HyperLink>

TeacherMath
چهارشنبه 24 خرداد 1391, 22:22 عصر
تابع هایلایت را در ایونت prerender کنترل هایپرلینک فراخوانی کن.

aserfg
جمعه 26 خرداد 1391, 12:09 عصر
دوست گرامی xxxsenatorxxx (http://barnamenevis.org/member.php?56799-xxxsenatorxxx) با عرض پوزش پیام شما رو تازه دیدم ، انشا.. مشکلتون حل شده باشه ، ولی اگر دوستان asp.net کار یه خورده سعی کنند به جای این که کدهای مربوط به عملیات مورد نظرشون در هر مورد رو در کد بیهایند انجام بدن ، سعی کنند در سمت کلاینت با جاوا اسکریپت نوشته و روشهای تعاملی بین کلاینت و کد بیهایند رو استفاده کنند در مسائل گوناگون برای همیشه راهکاری مناسب خواهند داشت .
به عنوان مثال در این مسئله یک متغیر public در کد بیهایند تعریف کرده و به محض گرفتن مقدار جستجو شده توسط هر روشی از قبیل کوئری استرینگ آن را در این متغیر عمومی ریخته ، که می دانیم در این حالت در سمت کلاینت به این متغیر عمومی دسترسی خواهیم داشت و سپس با توابع آدرس ذیل کارشون رو انجام بدن .
http://www.tedpavlic.com/post_simple_inpage_highlighting_example.php

fakhravari
جمعه 26 خرداد 1391, 12:59 عصر
با سلام.
من موارد بالا را هنوظ تست نکردم و ممنون میشم اگر نمونه کاملی دارید بزارید.
من این نمونه را دیدم
http://www.tedpavlic.com/post_simple_inpage_highlighting_example.php
وقتی query string میفرستیم چطوری به جاوا اعلام کنیم

fakhravari
جمعه 23 تیر 1391, 17:08 عصر
با توجه به پست 3 درست شد.
<%# HighlightKeywords(Eval("Subject").ToString()) %>
متد آن

protected void Page_Load(object sender, EventArgs e)
{
keywords = Request.QueryString["Subject"];
}

public static string keywords = "";
public static string HighlightKeywords(string input)
{
if (input == string.Empty || keywords == string.Empty)
{
return input;
}
string[] sKeywords = keywords.Split(' ');
foreach (string sKeyword in sKeywords)
{
try
{
input = Regex.Replace(input, sKeyword,
"<span style=\"background-color:#FFFF00\">" + sKeyword + "</span>", RegexOptions.IgnoreCase);
}
catch
{ }
}
return input;
}