2015年7月16日 星期四

[微軟範例] 簡單搜尋引擎 #2 (Model Binding / 類別檔入門)& 關鍵字的「高亮度(HighLight)」顯示


原文出處:(這裡是我的文章備份)

[微軟範例] 簡單搜尋引擎 #2 (Model Binding / 類別檔入門)& 關鍵字的「高亮度(HighLight)」顯示


http://www.dotblogs.com.tw/mis2000lab/archive/2015/07/16/search-engine-high-light-rowdatabound_20150716.aspx




上一個範例(源自微軟MSDN)非常有趣。
原本只是拿他的特點 -- 兩個簡單的 Class類別檔來解說而已。

[微軟範例] 簡單搜尋引擎 #1 (Model Binding / 類別檔入門)& 關鍵字的「高亮度(HighLight)」顯示


 
 
後來發現這個範例可以搭配我的書籍(ASP.NET專題實務)與課程(ASP.NET+ADO.NET實戰課程)教過的招式,做出一些變化。
 
如果「客戶提出一個需求」,而您可以有「多種」解法來因應
那不用擔心!您的能力夠了,出師了!!
 
 
(1).  原作透過 JavaScript幫搜尋的「關鍵字」加上「高亮度 (HighLight)」的效果來呈現
 
我們可以改用 DataBinding Expression來作
也就是您常在「樣板」中見到的 <%# Eval("...")%>與 <%# Bind("...")%>
 
HTML畫面修正如下,但後置程式碼不變。
 
好處是:不會破壞文章的「超連結」,如下圖。
不然您搜尋「a」這個字,剛好會把這段HTML破壞掉而無法超連結。
 
 
   
       
           

Search Result:

           
    id="result"
>   
       
 
       
           
  •  
               
               
     
    "<%# ResolveClientUrl("~/Show.aspx?id=" + Eval("ID").ToString()) %>" class="title">
    <%# Eval("Title").ToString().Replace(tbKeyWords.Text, "" + tbKeyWords.Text + "") %>
     
    <%# Eval("Content").ToString().Replace(tbKeyWords.Text, "" + tbKeyWords.Text + "") %>
     
     
               
           
     
           
               
           
       
     
     
     
     
     
    另一個相關範例可以參閱:
     
    使用時,有些需要注意的地方。雖然便捷好用,但要注意效能問題,請看 jeff 的文章:
     
     
     
    (2).  原作採用 Repeater來呈現搜尋結果
     
    如果畫面上,"臨時"想改成 GridView or ListView來呈現結果?程式有哪些修改?
     
    ** HTML畫面中,因為原作的JavaScript鎖定了 
      id="result">  ,
    因此當您改成GridView之後,JavaScript裡面也需要改成 
     
       

    沒有留言: