DataList和Repeater數(shù)據(jù)排序(一)講義_第1頁(yè)
DataList和Repeater數(shù)據(jù)排序(一)講義_第2頁(yè)
DataList和Repeater數(shù)據(jù)排序(一)講義_第3頁(yè)
DataList和Repeater數(shù)據(jù)排序(一)講義_第4頁(yè)
DataList和Repeater數(shù)據(jù)排序(一)講義_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在ASP.NET 2.0中操作數(shù)據(jù)之四十二:DataList和Repeater數(shù)據(jù)排序(一)作者:heker2007字體:增加 減小類(lèi)型:轉(zhuǎn)載 時(shí)間:2016-05-14我要評(píng)論本文主要介紹利用ObjectDataSource 的Selecting事件進(jìn)行 DataList和Repeater數(shù)據(jù)排序的方法,DropDownList隱式的為我們將 sort expression 和direction保存在它的view state里,進(jìn)行分頁(yè)時(shí)從 view state中取出條件進(jìn)行排序。導(dǎo)言DataList和Repeater數(shù)據(jù)分頁(yè)里我們學(xué)習(xí)了如何在DataList里添加分頁(yè)功能。我們?cè)赑rodu

2、ctsBLL 類(lèi)里創(chuàng)建了一個(gè)名為GetProductsAsPagedDataSource的方法,它返回一個(gè)PagedDataSource 對(duì)象。當(dāng)綁定到 DataList或Repeater時(shí),他們將只顯示請(qǐng)求頁(yè)的數(shù)據(jù)。 這個(gè)技術(shù)和 GridView , DetailsView , FormView的內(nèi)置分頁(yè)功能原理差不多。除了分頁(yè)外,GridView還提供了內(nèi)置的排序功能,而 DataList和Repeater都沒(méi)有。然而排序功能可以通過(guò)一點(diǎn)點(diǎn)代碼就實(shí)現(xiàn)。本章我們將學(xué)習(xí)如何在DataList和Repeater里實(shí)現(xiàn)排序功能,我們還將創(chuàng)建一個(gè)同時(shí)支持分頁(yè)和排序的DataList或Repeater

3、?;仡櫼幌屡判蛉缥覀?cè)诜猪?yè)和排序報(bào)表數(shù)據(jù)里看到的,GridView提供了排序的支持。每個(gè) GridView的字段可以有一個(gè)關(guān)聯(lián)的SortExpression ,它指明了對(duì)數(shù)據(jù)進(jìn)行排序依據(jù)的字段。當(dāng) GridView的AllowSorting屬性設(shè)為true時(shí),每個(gè)包含 SortExpression 屬性的GridView的字段 的header都表現(xiàn)為一個(gè) LinkButton 。當(dāng)點(diǎn)一個(gè)header時(shí),頁(yè)面postback ,數(shù)據(jù)會(huì)根據(jù)被 點(diǎn)字段的SortExpression進(jìn)行排序。另外,SortDirection屬性指明了數(shù)據(jù)是升序或降序。當(dāng)將GridView 綁定到數(shù)據(jù)源控件時(shí),它會(huì)將

4、SortExpression和SortDirection 傳給數(shù) 據(jù)源控件。數(shù)據(jù)源控件獲取數(shù)據(jù)并根據(jù)SortExpression和SortDirection進(jìn)行排序。然后將數(shù)據(jù)返回給GridView。在DataList或Repeater里實(shí)現(xiàn)這個(gè)功能,我們需要:創(chuàng)建一個(gè)排序界面將排序的字段和方向(升序或降序)記下指導(dǎo)ObjectDataSource根據(jù)特定字段排序我們將在第三和四步來(lái)處理上面三個(gè)步驟。然后我們將看看如何讓DataList或Repeater同時(shí)支持這兩個(gè)功能(分頁(yè)和排序)。第二步:在Repeater 里顯示 Products在實(shí)現(xiàn)排序功能前,首先創(chuàng)建一個(gè)列出所有product的R

5、epeater。打開(kāi)PagingSortingDataListRepeater 文件夾里的 Sorting.aspx 頁(yè)。添加一個(gè) Repeater,將 ID 設(shè)為 SortablePro ducts。從智能標(biāo)簽里創(chuàng)建一個(gè)名為ProductsDataSource 的 ObjectDataSource 。用 ProductsBLL類(lèi)的GetProducts()方法配置它。在 INSERT, UPDATE, DELETE標(biāo)簽的下拉列表里選 擇”(None):Configure Da Source - ProductsDefdultPaingDatiSource回叵團(tuán)區(qū)Define Data Met

6、hodsSELECT UPOATE INSERT 見(jiàn)曰a mitKcd of the h-rfli%frJ5 cbjfoct ta a日期日*e 5dhi the DELETE operatic. The m6匕融 shbild accept paranieteT for each primary 庇y for the data otjeit or a rqIe parameter whoch E the data otpct to (letebe.Exwips: DeMgProductCProductMj 卡 Cefet呀oduutflnCZ fodvctK*)wose a method;h

7、Modb)yNoneDeteUPp。g tflciBS prod 咐 JDL 做 untf Boo&rijsiri&di cbj&tfe tKat rdturnj 總岫貼 &cm恒網(wǎng)惜 hht SELECT eper珈w. Tht method can return a DataSetf 品teRe可曲. or stranflly-typedcDllectiori.ExjmpJe: Gelft口dLrHlnL32 categoryIdX jetLMnsjDataSet.noose o methiod;(5e tProdiKtsAsaged&ataScLmcefrrtS pa5elndex, I

8、ntS?七GetProd uctBy?!aductnXlrt 32 productlD), re Uns PraftxbS國(guó)T就teGetPfK uctf。jeMf m PrNu a 式i*mT abieetpdud方網(wǎng)聲號(hào)的1M。工3!/(IrJt32 cateorylD returns ProdtictsOaftaTaWeGetProduct6v5uppliirrDtInt32 eupph&flD),. returns ProductsDatalablfrGProdgfP為自式1m32 sUrtRqwind*1trt32rMocimwmRw?X returns PiF&MggtqgbkGe

9、tPFMuctEPagmMc克WdtSMr力EatE%ae5im工【收己丑奴白代只叫小,怠工Int12 旭燈viumR口冏eJ, return竹口d口 Canod圖2:在 UPDATE, INSERT, DELETE 標(biāo)簽的下拉列表里選擇“(None)在綁定到數(shù)據(jù)源后,Visual Studio沒(méi)有自動(dòng)為 Repeater創(chuàng)建ItemTemplate ,這點(diǎn)和DataList不一樣。而且由于 Repeater控件的智能標(biāo)簽里沒(méi)有象DataList里那樣的EditTemplates選項(xiàng),因此我們需要直接添加聲明代碼。我們使用和前一章一樣的ItemTemplate,它顯示 product 的 na

10、me, supplier, category ?,F(xiàn)在你的Repeater和ObjectDataSource的聲明標(biāo)記看起來(lái)應(yīng)該和下面差不多:12345678910111213141516171819202122232425asp:Label ID=ProductNameLabel runat=server|Text=Category:asp:Label ID=CategoryNameLabel runat=serverText=Supplier:asp:Label ID=SupplierNameLabel runat=serverText= |2728293031323334353637圖3是

11、現(xiàn)在瀏覽該頁(yè)的樣子。圖 3:顯示 Product 的 Name, Supplier, Category123456789第三步:指導(dǎo)ObjectDataSource對(duì)數(shù)據(jù)進(jìn)行排序?yàn)榱俗孯epeater里顯示的數(shù)據(jù)排序,我們需要將數(shù)據(jù)排序的sort expression告訴ObjectDataSource 。在 ObjectDataSource 獲取數(shù)據(jù)前,首先激發(fā)的是Selecting event ,它給我們提供了一個(gè)指定 sort expression 的機(jī)會(huì)。Selecting event handler 有一個(gè) ObjectDat aSourceSelectingEventArgs類(lèi)型的

12、參數(shù),它有一個(gè)名為Arguments 的 DataSourceSelectArguments類(lèi)型的屬性.。DataSourceSelectArguments 類(lèi)被設(shè)計(jì)用來(lái)將數(shù)據(jù)相關(guān)的請(qǐng)求從數(shù) 據(jù)的消費(fèi)者傳給數(shù)據(jù)源控件,它有一個(gè)SortExpression property 。創(chuàng)建一個(gè)Selecting event handler ,用以下代碼將排序的信息從ASP.NET頁(yè)傳給ObjectDataSource :protected void ProductsDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs

13、 e)e.Arguments.SortExpression = sortExpression;sortExpression 需要賦值為排序字段的名字(例如“ProductName)。它沒(méi)有排序方向相關(guān)的屬性,因此如果需要以降序來(lái)排序,將“DESC付力口在sortExpression的值后面(比如 ProductName DESC )。繼續(xù)試一下硬編碼將 sortExpression賦為不同的值,并瀏覽頁(yè)面 。如圖4,當(dāng)使用“P roductName DESC”作為sortExpression時(shí),product會(huì)根據(jù)name的字母順序反向排序。的回國(guó)回國(guó)Elfe Ldt /ew f 4wnt L

14、ls 上匕/ Sttrth Faortes 在,四1 r .-:- http UflocafriMt 11957JC cdgsii/3FrMinfc 乩魅 sMaew/Soctiftfl .punrUniilled Micrmofl InternH KplorprWorking with Data Tutorials ,曷需慳思尸SortingHomeBaste reporting51m 匚他 DispySorting Data in a Repeater ControlDedara bveParametersZaanse koekenSetting Pflremettr valuesFdtn

15、nq ReportsFilter bF Drop-DcnLBtMs ttr-Detail s- D4 tailsCategory : CQnfectinsSupplier Zaanse SnoepfatielWimmers gute SemrticIknOdclCategtjfy: G卻ns/C電realsSupplier: Wutzer LebensmitteIgroBmrkte AGMsster/Detail Across:Two PaesVrilkoinn Bukl。心口仃已舊-SdecrdRowCeregory: ConfectionsSupplier. Karkki OyCuEtDm

16、lzedF5m 日 ttngFormp ( 3b 3Unde B0bts Organic Dried Pearsn m Hi i er ; le4ljntrart圖4: Product 根據(jù)Name 的字母順序反向排序第四步:創(chuàng)建排序界面并記下Sort Expression 和Direction開(kāi)啟GridView的排序支持會(huì)將每個(gè)可排序的字段的header text轉(zhuǎn)換為一個(gè)LinkButton,當(dāng)被點(diǎn)擊時(shí),會(huì)進(jìn)行相對(duì)應(yīng)的排序。這樣的排序?qū)?GridView來(lái)說(shuō)是很合理的,因?yàn)樗?的數(shù)據(jù)是以列的形式整齊的展示。而對(duì)DataList和Repeater來(lái)說(shuō),需要不同的排序界面。一個(gè)常見(jiàn)的數(shù)據(jù)列表

17、(相對(duì)于數(shù)據(jù)網(wǎng)格)的排序界面是使用一個(gè)提供排序字段的下拉列 表。我們本章將完成這樣的界面。在 SortableProducts Repeater 上方添加一個(gè) DropDownList ,將 ID 設(shè)為 SortBy。在屬 性窗口里點(diǎn)Items屬性打開(kāi)ListItem 集合編輯器。添加 ListItems ,讓數(shù)據(jù)根據(jù) ProductNa me, CategoryName, SupplierName 字段排序。同時(shí)添加 ListItem 讓 product 根據(jù)反向的 name的順序排序。ListItem 的Text屬性可以設(shè)為任何值(比如 Name),但是Value必須設(shè)為數(shù)據(jù)字 段的名字(

18、比如“ProductName)。添加字符串“DESCU數(shù)據(jù)字段名字后面,來(lái)讓結(jié)果以降序排序,比如ProductName DESC 。Listitem Collection EditorName properties: 祠4 I IE圖5:為每個(gè)可排序的字段添加ListitemText 設(shè)最后在 DropDownList 的右邊添加一個(gè) Button。將 ID 設(shè)為 RefreshRepeater , 為Refresh :完成這些后,DropDownList和Button的聲明語(yǔ)法看起來(lái)應(yīng)該和下面差不多:12345678910111213asp:DropDownList ID=SortBy ra

19、sp:ListItem Value=ProductName DESC/asp:ListItemCaSu/asp:DropDownListasp:Button runat=server ID=RefreshRep完成 DropDownList 后,我們需要更新 ObjectDataSource 的 Selecting event handler ,來(lái)讓它使用151617181920212223242526272829303132(object sender, ObjectDataSourceSe/ Have the ObjectDataSource sort the/ sort expressi

20、oe.Arguments.SortExpression = Sort現(xiàn)在第一次瀏覽頁(yè)的時(shí)候,由于默認(rèn)的SortBy Listitem 的值為ProductName ,因此product會(huì)根據(jù)ProductName字段來(lái)排序。見(jiàn)圖 6。選擇一個(gè)其它的項(xiàng)-比如“Category 然后點(diǎn)Refresh ,這時(shí)會(huì)postback ,數(shù)據(jù)會(huì)根據(jù) category name來(lái)重新排序,見(jiàn)圖 7。圖6:第一次 Products 根據(jù) Name 排序圖7:現(xiàn)在 Products 根據(jù) Category 來(lái)排序注意:點(diǎn) Refresh button會(huì)讓數(shù)據(jù)重新排序是因?yàn)?Repeater的view state被禁用了,因此 Repeate r在每次post

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論