天天看點

ASP.NET輸入文本框自動提示功能

在ASP.NET Web開發中會經常用到自動提示功能,比如百度搜尋。我們隻要輸入相應的關鍵字,就可以自動得到相似搜尋關鍵字的提示,友善我們快速的輸入關鍵字進行查詢。

ASP.NET輸入文本框自動提示功能

那麼在ASP.NET中,如果我們需要做個類似的效果,該如何做到呢?

下面我們将以一個身份證号自動查詢為例,來看看JQuery AutoComplete的強大和簡潔。

首先我們要準備好插件,可以在官方下面下載下傳下來。

一、aspx頁面

在head部分,導入相應js和css。

1

2

3

4

5

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"../js/jquery-1.4.2.js"</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

<code>                          </code> 

<code>&lt;</code><code>link</code> <code>href</code><code>=</code><code>"../js/jquery.autocomplete.css"</code> <code>rel</code><code>=</code><code>"stylesheet"</code> <code>type</code><code>=</code><code>"text/css"</code> <code>/&gt;</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"../js/jquery.autocomplete.js"</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

注意jquery-1.4.2.js一定要在最上面,因為autocomplete插件基于核心jquery.js。至于jquery的版本,讀者可以自行下載下傳最新版。

然後繼續寫上核心js部分。

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<code>&lt;script type=</code><code>"text/javascript"</code><code>&gt;</code>

<code>    </code><code>$(</code><code>function</code><code>(){</code>

<code>        </code><code>$(</code><code>"#&lt;%=txtSfzh.ClientID %&gt;"</code><code>).autocomplete(</code><code>"../services/SearchSyryInfoService.ashx"</code><code>,{</code>

<code>            </code><code>width: 500,</code>

<code>            </code><code>max: 20,</code>

<code>            </code><code>delay: 5,</code>

<code>            </code><code>cacheLength: 1,</code>

<code>            </code><code>formatItem: </code><code>function</code><code>(data, i, max) {</code>

<code>                </code><code>return</code> <code>data.toString();</code>

<code>            </code><code>},</code>

<code>            </code><code>formatResult: </code><code>function</code><code>(data) {</code>

<code>                </code><code>return</code> <code>data.toString().split(</code><code>","</code><code>)[1];</code>

<code>            </code><code>}</code>

<code>        </code><code>}).result(</code><code>function</code><code>(event, data, formatted) {</code>

<code>            </code><code>var</code> <code>array = data.toString().split(</code><code>","</code><code>);</code>

<code>            </code><code>$(</code><code>"#&lt;%=txtXm.ClientID %&gt;"</code><code>).val(array[0]);</code><code>//姓名</code>

<code>            </code><code>$(</code><code>"#&lt;%=txtSfzh.ClientID %&gt;"</code><code>).val(array[1]);</code><code>//身份證号</code>

<code>            </code><code>$(</code><code>"#&lt;%=txtJtzz.ClientID %&gt;"</code><code>).val(array[2]);</code><code>//家庭住址</code>

<code>            </code><code>$(</code><code>"#&lt;%=txtLxdh.ClientID %&gt;"</code><code>).val(array[3]);</code><code>//聯系電話</code>

<code>        </code><code>});</code>

<code>    </code><code>});</code>

<code>&lt;/script&gt;</code>

在body的頁面部分準備一個頁面:

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<code>&lt;</code><code>table</code> <code>cellpadding</code><code>=</code><code>"0"</code> <code>cellspacing</code><code>=</code><code>"0"</code> <code>border</code><code>=</code><code>"1"</code> <code>width</code><code>=</code><code>"100%"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>tr</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>label</code><code>&gt;</code>

<code>                        </code><code>身份證号&lt;/</code><code>label</code><code>&gt;</code>

<code>                </code><code>&lt;/</code><code>td</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:TextBox</code> <code>runat</code><code>=</code><code>"server"</code> <code>ID</code><code>=</code><code>"txtSfzh"</code> <code>/&gt;</code>

<code>                        </code><code>姓名&lt;/</code><code>label</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:TextBox</code> <code>runat</code><code>=</code><code>"server"</code> <code>ID</code><code>=</code><code>"txtXm"</code> <code>/&gt;</code>

<code>            </code><code>&lt;/</code><code>tr</code><code>&gt;</code>

<code>                        </code><code>家庭位址&lt;/</code><code>label</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:TextBox</code> <code>runat</code><code>=</code><code>"server"</code> <code>ID</code><code>=</code><code>"txtJtzz"</code> <code>/&gt;</code>

<code>                        </code><code>聯系電話&lt;/</code><code>label</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:TextBox</code> <code>runat</code><code>=</code><code>"server"</code> <code>ID</code><code>=</code><code>"txtLxdh"</code> <code>/&gt;</code>

<code>            </code><code>&lt;</code><code>tr</code> <code>align</code><code>=</code><code>"center"</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>td</code> <code>colspan</code><code>=</code><code>"4"</code><code>&gt;</code>

<code>                    </code><code>&lt;</code><code>asp:Button</code> <code>ID</code><code>=</code><code>"btnSearch"</code> <code>runat</code><code>=</code><code>"server"</code> <code>Text</code><code>=</code><code>"查詢"</code> <code>Width</code><code>=</code><code>"80px"</code> <code>OnClick</code><code>=</code><code>"btnSearch_Click"</code> <code>/&gt; </code>

<code>                    </code><code>&lt;</code><code>asp:Button</code> <code>ID</code><code>=</code><code>"btnReset"</code> <code>runat</code><code>=</code><code>"server"</code> <code>Text</code><code>=</code><code>"重置"</code> <code>Width</code><code>=</code><code>"80px"</code> <code>OnClick</code><code>=</code><code>"btnReset_Click"</code> <code>/&gt;</code>

<code>        </code><code>&lt;/</code><code>table</code><code>&gt;</code>

二、ashx背景

<code>public</code> <code>void</code> <code>ProcessRequest(HttpContext context)</code>

<code>    </code><code>{</code>

<code>        </code><code>context.Response.ContentType = </code><code>"text/plain"</code><code>;</code>

<code>          </code> 

<code>        </code><code>if</code> <code>(context.Request.QueryString[</code><code>"q"</code><code>] != </code><code>null</code><code>)</code>

<code>        </code><code>{</code>

<code>            </code><code>string</code> <code>key = context.Request.QueryString[</code><code>"q"</code><code>];</code>

<code>            </code><code>if</code> <code>(key.Trim().Length &gt;= 8)</code><code>//大于等于8位,才去查資料庫。這是為了緩解資料庫查詢的壓力,隻當輸入了8位以上身份證以後才進行資料庫檢索。</code>

<code>            </code><code>{</code>

<code>                </code><code>string</code> <code>keyValues = GetKeyValues(key);</code>

<code>                </code><code>context.Response.Write(keyValues);</code>

<code>        </code><code>}</code>

<code>    </code><code>}</code>

<code>    </code><code>public</code> <code>bool</code> <code>IsReusable</code>

<code>        </code><code>get</code>

<code>            </code><code>return</code> <code>false</code><code>;</code>

<code>    </code><code>public</code> <code>static</code> <code>string</code> <code>GetKeyValues(</code><code>string</code> <code>key)</code>

<code>        </code><code>BLL bll = </code><code>new</code> <code>BLL();</code>

<code>        </code><code>DataTable dt = bll.GetPersons(key).Tables[0];</code><code>//通過關鍵字k(k是前台頁面輸入的身份證号碼)到背景去查詢人員資訊并傳回一個結果集</code>

<code>        </code><code>StringBuilder sb = </code><code>new</code> <code>StringBuilder();</code>

<code>        </code><code>foreach</code> <code>(DataRow dr </code><code>in</code> <code>dt.Rows)</code>

<code>            </code><code>sb.Append(dr[</code><code>"result"</code><code>].ToString() + </code><code>"\n"</code><code>);</code>

<code>        </code><code>return</code> <code>sb.ToString().Trim();</code>

如上代碼即可實作輸入身份證号時自動檢索資料庫并給出相關資訊,當選擇某條資料的時候,自動給文本框指派,減少了人工的輸入。

鑒于資訊保密,這裡就不上傳效果圖了,讀者可以自己動手試一試。

本文轉自 guwei4037  51CTO部落格,原文連結:http://blog.51cto.com/csharper/1345987