感謝張子陽先生先?。ㄈ恼洠﹚ww.tracefact.net/Asp-Net/AutoCompleteExtender.aspx個(gè)人的觀后感: 子陽, 你好,無意中搜索到你的一篇技術(shù)類文章(AutoCompleteExtender...),結(jié)果是看到一半把你的5篇日志先看完了!那倒不是因?yàn)榧夹g(shù)類的文章寫的不好。相反我覺得這些文字是用心在總結(jié)以致我產(chǎn)生了好奇...同是82年,不同的是去年我才開始接觸.net! 對(duì)你的一些觀點(diǎn)和想法很是認(rèn)可,或許都是染上80后烙印的緣故吧... 關(guān)于成功,也思考的比較多!為什么會(huì)成功?是什么把人推向成功的彼岸?我想到了比爾蓋茨,拋開其它的不說,他的讓每個(gè)人都有一臺(tái)電腦的想法很犀利!在這里 我很在乎他的這種服務(wù)的意識(shí)和心態(tài)!在貨幣沒有出現(xiàn)之前人與人之間的關(guān)系比較趨向于不記名的互相幫助的平等關(guān)系。時(shí)代的發(fā)展和社會(huì)的分工讓整個(gè)人類的內(nèi)部 關(guān)系產(chǎn)生了梯度。人類的發(fā)展趨勢(shì)是兩極分化還是水平化不容易下定論?;蛟S高數(shù)中的正態(tài)分布才是自然的選擇,成功是因?yàn)槭?,失敗是因?yàn)槌晒?。我們要敲代碼 是因?yàn)槲覀儾粫?huì)做農(nóng)活,農(nóng)民要耕地是因?yàn)樗麄儾粫?huì)敲代碼,我們?nèi)プ鲛r(nóng)活,農(nóng)民來敲代碼都不會(huì)符合市場(chǎng)經(jīng)濟(jì)規(guī)律。因?yàn)檎麄€(gè)人類從來不停止對(duì)低成本低碳生活的 追求。社會(huì)下的大分工就是你中有我,我中有你!我為人人,人人為我。所以我終于想通了也放棄了某一天要停止工作的想法,因?yàn)槲夜ぷ鞑粌H僅是為了自己或者是 他人?;蛟S等自己明白了這其中的道理也就不太在乎什么是成功了!那是一種心態(tài),一種境界... 引言Ajax Control Toolkit 是一個(gè)豐富的控件集,可以為我們提供許多很炫也很實(shí)用的頁面功能。編寫一個(gè)Asp.Net Ajax控件是比較耗費(fèi)精力的,不僅需要有一定的javascript腳本編寫能力,還需要了解微軟的Ajax Library。如果我們急需一些效果,那么可以直接使用Ajax Control Toolkit 所提供的一些功能。但是如果想要完全明白它是如何運(yùn)作的,還是需要認(rèn)真地學(xué)習(xí)一下如何編寫一個(gè)Asp.Net Ajax控件。我個(gè)人覺得Asp.Net Ajax控件能夠較好地將以前的編寫的javascript特效也融合到了.Net控件中,這樣既利于javascipt代碼的重用,更便于日后的使用, 而不是一定要在控件中使用Ajax方式與服務(wù)端進(jìn)行一次通信往來。 在Ajax Control Toolkit中包含了兩類控件,其中一類后綴為Extender,也就是“擴(kuò)展”的意思,這類控件可以對(duì)現(xiàn)有Asp.Net的能力進(jìn)行擴(kuò)充,來實(shí)現(xiàn)一些 更華麗的效果。這篇文章簡(jiǎn)單介紹一下Ajax Control Toolkit中的AutoCompleteExtender如何使用,顧名思義,它可以實(shí)現(xiàn)一個(gè)常見的效果:AutoComplete(自動(dòng)匹配)。 編寫WCF Service代碼在進(jìn)行AutoComplete時(shí),是將客戶端文本框中輸入的值與服務(wù)器端的數(shù)據(jù)相比較,這樣就需要在服務(wù)端創(chuàng)建一個(gè)方法,它能夠接受來自客戶端文 本框輸入的字符串,并且針對(duì)此字符串對(duì)數(shù)據(jù)庫或者其他數(shù)據(jù)源中的數(shù)據(jù)進(jìn)行查找,然后將匹配的結(jié)果以字符串?dāng)?shù)組的形式返回給客戶端,最后客戶端將獲得的結(jié)果 以列表形式顯示在輸入文本框的下面。盡管前面的描述只有短短的幾句話,但是卻暗含了這樣幾個(gè)問題需要注意:
了解了上面3個(gè)問題,我們現(xiàn)在在站點(diǎn)下創(chuàng)建一個(gè)Ajax-Enabled WCF Service,起名為AutoCompleteService,然后在App_Code中修改AutoCompleteService.cs: // 上面的特性省略 這里我們使用一個(gè)靜態(tài)字段緩存了數(shù)據(jù)源中的結(jié)果,以符合上面所說的第1條。接下來我們看一下GetCityList()方法,它接受兩個(gè)參 數(shù):prefixText,代表客戶端文本框中已經(jīng)輸入的值;而count表示返回的結(jié)果數(shù)目。第2個(gè)參數(shù)體現(xiàn)了我們前面所說的第2點(diǎn)。方法的實(shí)現(xiàn)沒有什 么好說的,無非是遍歷集合,返回與prefixText相匹配的結(jié)果。這里要特別說明的是:因?yàn)檫@個(gè)方法要與aspx頁面上的 AutoCompleteExtender控件協(xié)作,所以方法的簽名必須為:public string[] XXXXX(string prefixText, int count),其中XXXX代表任意合法的方法名稱,但是參數(shù)的類型和名稱則必須完全一致。 Web頁面實(shí)現(xiàn)Web頁面的實(shí)現(xiàn)就更為簡(jiǎn)單了,因?yàn)槲覀兪褂肁jax Control Toolkit中的現(xiàn)成控件,所以不需要自己編碼,只需要對(duì)控件的屬性進(jìn)行設(shè)置一下就可以了。因?yàn)槲覀円褂肳eb服務(wù),所以需要首先在ScriptManager中對(duì)服務(wù)進(jìn)行一下注冊(cè): <asp:ScriptManager ID="ScriptManager1" runat="server"> 接著我們?cè)陧撁嫱戏乓粋€(gè)Asp.Net Textbox控件,以及一個(gè)AutoCompleteExtender控件,并向下面這樣對(duì)AutoCompleteExtender控件設(shè)置屬性: 輸入城市(拼音) TextBox和通常的沒有任何區(qū)別,所以我們只要看下AutoCompleteExtender就可以了。我們?cè)O(shè)置了這樣幾個(gè)屬性:
接下來運(yùn)行頁面,應(yīng)該可以看到這樣的結(jié)果: 總結(jié)在這篇文章中,實(shí)現(xiàn)了當(dāng)今Web頁面中很常見的一個(gè)AutoComplete功能,我們首先分析了實(shí)現(xiàn)的過程中可能會(huì)存在的問題,隨后借助Ajax Control Toolkit中的AutoCompleteExtender控件輕松地進(jìn)行了實(shí)現(xiàn)。 感謝閱讀,希望這篇文章能給你帶來幫助! |
|