明日茶座 |
 |
|
|
|
|
|
視頻中心 |
 |
|
|
|
|
|
經驗技巧 |
 |
|
|
|
|
|
|
|
|
技巧名稱: |
實現多個搜索關鍵字在GridVewi中描紅顯示 |
添加時間: |
2010-07-05 |
作者: |
房大偉 |
技巧類別: |
ASP.NET |
實現搜索GridView多個關鍵字高亮顯示
運行效果
應用ASP.NET實現搜索GridView關鍵字高亮顯示,并支持多個關鍵字的搜索功能,以方便用戶查找的關鍵字更加醒目突出。
關鍵技術
主要使用Replace方法,該方法可以替換掉一個字符串中的某些特定字符或者子串。語法格式如下。
public string Replace (string oldValue,string newValue)
參數說明如下。
 oldValue:要替換的字符。
 newValue:要替換oldValue的所有匹配項的字符。
說明:在搜索關鍵詞高亮中一般的方法都是采用替換的辦法(Replace)這個方法有一個缺點就是不能區分大小寫的問題。可以使用用正則表達式的方法來解決這個問題,并且效率也比較高。
設計過程
(1)新建一個網站將其命名為EvalReplace,默認主頁為Default.aspx,在該主頁中添加一個GridView控件綁定商品信息。
(2)在后臺代碼中,主要編寫了一個自定義Highlightkeywords()方法實現支持多個關鍵字搜索高亮顯示的功能,具體代碼如下:
/// <summary>
/// 替換關鍵字為紅色
/// </summary>
/// <param name="keycontent">原始內容</param>
/// <param name="k">關鍵字,支持多關鍵字</param>
/// <returns>String</returns>
/// <author>haver Guo</author>
public string Highlightkeywords(string keycontent, string k)
{
string resultstr = keycontent;
if (k == "") //如果不存在搜索的關鍵字,返回原狀態
{
return keycontent;
}
if (k.Trim().IndexOf(',') > 0)
{
string[] myArray = k.Split(','); //多個關鍵字搜索,以(,)來分隔
for (int i = 0; i < myArray.Length; i++)//存在搜索的關鍵字以描紅方式顯示
{
resultstr = resultstr.Replace(myArray[i].ToString(), "<span class='highlightTxtSearch'>" + myArray[i].ToString() + "</span>");
}
return resultstr;
}
else
{
return resultstr.Replace(k, "<span class='highlightTxtSearch'>" + k + "</span>");
}
}
心法領悟001: 使用正則表達式解決(Replace)方法不能區分大小寫的問題
使用正則表達式解決(Replace)方法不能區分大小寫的問題,代碼如下:
public static string HighLightKeyWord(string pain,string keyword)
{
//搜索關鍵詞高亮函數By JN 2006.11.30
System.Text.RegularExpressions.MatchCollection m = Regex.Matches(pain, keyword, RegexOptions.IgnoreCase);
//忽略大小寫搜索字符串中的關鍵字
for (int j = 0; j < m.Count; j++)//循環在匹配的子串前后
{
//j×31為插入html標簽使pain字符串增加的長度:
pain = pain.Insert((m[j].Index + keyword.Length + j * 31), "</font>");//關鍵字后插入html標簽
pain = pain.Insert((m[j].Index + j * 31), "<font color=#ff0000>");//關鍵字前插入html標簽
}
return pain;
}
|
|
|