微軟的ASP.NET的開發(fā),就是面向?qū)ο蟮木幊蹋?dāng)然前端也能體驗(yàn)至面向?qū)ο蟮脑挘褂肳eb控件也必須的。任一控件,我們均可以在后端.aspx.cs或.aspx.vb程序中new一個(gè)對象出來。很多場合里,在開發(fā)ASP.NET開發(fā)中,后端與前端交互,我們使用控件確實(shí)能方便與快捷互通。本篇所涉及的內(nèi)容以html markup標(biāo)簽與javascript(或jQuery)無關(guān),因?yàn)檠菔镜氖荳eb控件應(yīng)用。Insus.NET經(jīng)常會(huì)針對開發(fā)的應(yīng)用程序,寫一些常用或是特定的對象或是控件。在一起開發(fā)的團(tuán)隊(duì)的能句方便用使用,能得到客戶需求的功能與效果。開發(fā)這些對象或是控件,也并非一開始就能寫得出來,均是經(jīng)過一系列編程之后,再次review或是優(yōu)化的結(jié)果。舉個(gè)例子來說明,先在SQL Server數(shù)據(jù)庫中,創(chuàng)建一個(gè)數(shù)據(jù)表,如[dbo].[UserInfo]:對這個(gè)表,添加幾筆記錄:
寫一個(gè)存儲(chǔ)過程,是獲取剛才添加的所有記錄:
OK,數(shù)據(jù)庫層已經(jīng)設(shè)計(jì)好了,我們?nèi)SP.NET網(wǎng)站寫程序,需要把這些數(shù)據(jù)呈現(xiàn)于網(wǎng)頁上。邏輯層就使用《ASP.NET開發(fā),從二層至三層,至面向?qū)ο?(3)》 http://www.survivalescaperooms.com/insus/p/3826706.html將來的的博文演示中也會(huì)使用它。在App_Code目錄下,創(chuàng)建一個(gè)以數(shù)據(jù)表名相同的一個(gè)類(對象):
新建一個(gè)網(wǎng)頁.aspx,用它來呈現(xiàn)數(shù)據(jù)表的數(shù)據(jù),直接拉數(shù)據(jù)控件GridView:在.aspx.cs代碼中,實(shí)現(xiàn)給GridView控件綁定數(shù)據(jù):
瀏覽一下:
以上的實(shí)現(xiàn),相信很多學(xué)習(xí)與開發(fā)asp.net的人都會(huì),太簡單了,根本不值得一說一提一寫。
問題來了,最后一列[Sex],性別具體1代碼是男還是女,反之亦如此。能否以更友好清晰的表達(dá)來表現(xiàn)?下面列幾種網(wǎng)友用常的方法:第一種方法,寫一個(gè)小函數(shù)去替換:
寫好函數(shù)之后,在.aspx的Gridview控件,需要修改,不能使用自動(dòng)產(chǎn)生列了:
預(yù)覽結(jié)果:
第二種方法,較為復(fù)雜一些,不過也較常使用的,在.aspx分三步來修改GridView:
下面是實(shí)現(xiàn)OnRowDataBound="GridView1_RowDataBound":此種方法預(yù)覽結(jié)果跟第一種方法是一樣的。
第三種方法,是Insus.NET使用的方法。出現(xiàn)這樣的問題,多數(shù)是多表關(guān)聯(lián),一張表某些字段是另一個(gè)表的外鍵值。呈現(xiàn)時(shí),均是鍵值或是代號(hào)。但實(shí)際是需要顯示實(shí)際意義的字段。
解決它,可以創(chuàng)建一個(gè)表,是key與value對應(yīng)的表:然后修改一下[dbo].[usp_UserInfo_GetAll]存儲(chǔ)過程:
在asp.net程序中,在后端無需修心任代碼。
在.aspx頁中的GridView中,僅引用另一個(gè)字段名:
三種方法,均演示完成了。哪一種方法,你覺得好,就使參考哪一種。下面有新的要求,客戶要求,將顯示的0或1的信息,使用一張圖片來替代。這要求不難,用文字“男”或“女”還是用圖片去替代0或1的方法,均是一樣的。用Image去實(shí)現(xiàn)就是了。下面Insus.NET來演示一番:實(shí)現(xiàn)之前,得先準(zhǔn)備好兩張圖片,放于站點(diǎn)某一目錄之下。
上面有三個(gè)步驟標(biāo)記1至標(biāo)記3。
編寫一個(gè)私有函數(shù):
然后就可以寫OnRowDataBound="GridView1_RowDataBound"事件了:
改好了,瀏覽看看效果:
上面圖片替換方法,是通用大家所使用的方法。不過Insus.NET的方法,卻不是這樣來做。Insus.NET需要封裝GetSexImagePath(string num)或是GetSex(string num)函數(shù)另外,由這地方的呈現(xiàn)在一個(gè)網(wǎng)站中,也許不止一次(網(wǎng)頁)呈現(xiàn),在管理員后臺(tái),會(huì)員后臺(tái),前端面向所有用戶呈現(xiàn)的網(wǎng)頁均要此樣式呈現(xiàn)。
因此,可以寫成一個(gè)控件即可,先在App_Code創(chuàng)建一個(gè)類別SexImg:
有三個(gè)public的PRoperty以及override方法RenderContents()。重要的一點(diǎn),是繼承了WebControl類。接著,我們打開web.config文件,注冊一下上面我們創(chuàng)建好的控件:
現(xiàn)在的問題是怎樣使用這個(gè)控件呢?跟Web控件一樣,沒有什么分別:
在GridView控件內(nèi),使用剛才寫好的控件,直接指寫三個(gè)property。
在.aspx.cs內(nèi),無需寫什么代碼:
瀏覽的效果,跟上面的一樣:
最后一個(gè)演示,學(xué)會(huì)了封裝與創(chuàng)建自己定義控件。Insus.NET雖然只是依性別來舉列,實(shí)現(xiàn)開發(fā)時(shí),可會(huì)遇上很多類別,目錄等相關(guān)的。方法掌握了,相似的功能可以輕易實(shí)現(xiàn)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注