亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 在ASP.NET 2.0中操作數(shù)據(jù)之四十二:DataList和Repeater數(shù)據(jù)排序(一)

在ASP.NET 2.0中操作數(shù)據(jù)之四十二:DataList和Repeater數(shù)據(jù)排序(一)

熱門標(biāo)簽:百應(yīng)電話機(jī)器人外呼系統(tǒng) 網(wǎng)絡(luò)電話外呼系統(tǒng)上海 地圖標(biāo)注軟件免費(fèi)下載 聯(lián)通官網(wǎng)400電話辦理 臨沂智能電話機(jī)器人加盟 蘇州如何辦理400電話 西寧呼叫中心外呼系統(tǒng)線路商 400電話辦理怎么樣 外呼電話機(jī)器人成本

導(dǎo)言

  DataList和Repeater數(shù)據(jù)分頁里我們學(xué)習(xí)了如何在DataList里添加分頁功能。我們在ProductsBLL類里創(chuàng)建了一個名為GetProductsAsPagedDataSource的方法,它返回一個PagedDataSource對象。當(dāng)綁定到DataList或Repeater時,他們將只顯示請求頁的數(shù)據(jù)。這個技術(shù)和GridView,DetailsView,F(xiàn)ormView的內(nèi)置分頁功能原理差不多。

  除了分頁外,GridView還提供了內(nèi)置的排序功能,而DataList和Repeater都沒有。然而排序功能可以通過一點(diǎn)點(diǎn)代碼就實(shí)現(xiàn)。本章我們將學(xué)習(xí)如何在DataList和Repeater里實(shí)現(xiàn)排序功能,我們還將創(chuàng)建一個同時支持分頁和排序的DataList或Repeater。

回顧一下排序

  如我們在分頁和排序報(bào)表數(shù)據(jù)里看到的,GridView提供了排序的支持。每個GridView的字段可以有一個關(guān)聯(lián)的SortExpression,它指明了對數(shù)據(jù)進(jìn)行排序依據(jù)的字段。當(dāng)GridView的AllowSorting屬性設(shè)為true時,每個包含SortExpression 屬性的GridView的字段的header都表現(xiàn)為一個LinkButton。當(dāng)點(diǎn)一個header時,頁面postback,數(shù)據(jù)會根據(jù)被點(diǎn)字段的SortExpression進(jìn)行排序。另外,SortDirection屬性指明了數(shù)據(jù)是升序或降序。

  當(dāng)將GridView綁定到數(shù)據(jù)源控件時,它會將SortExpression和SortDirection傳給數(shù)據(jù)源控件。數(shù)據(jù)源控件獲取數(shù)據(jù)并根據(jù)SortExpression和SortDirection進(jìn)行排序。然后將數(shù)據(jù)返回給GridView。

在DataList或Repeater里實(shí)現(xiàn)這個功能,我們需要: 

  創(chuàng)建一個排序界面
  將排序的字段和方向(升序或降序)記下
  指導(dǎo)ObjectDataSource根據(jù)特定字段排序

  我們將在第三和四步來處理上面三個步驟。然后我們將看看如何讓DataList或Repeater同時支持這兩個功能(分頁和排序)。

第二步: 在 Repeater里顯示 Products

  在實(shí)現(xiàn)排序功能前,首先創(chuàng)建一個列出所有product的Repeater。打開PagingSortingDataListRepeater文件夾里的Sorting.aspx頁。添加一個Repeater,將ID設(shè)為SortableProducts。從智能標(biāo)簽里創(chuàng)建一個名為ProductsDataSource的ObjectDataSource。用ProductsBLL類的GetProducts()方法配置它。在INSERT, UPDATE, DELETE標(biāo)簽的下拉列表里選擇“(None)”。


圖 1: 創(chuàng)建 ObjectDataSource


圖 2: 在 UPDATE, INSERT, DELETE 標(biāo)簽的下拉列表里選擇 “(None)”

  在綁定到數(shù)據(jù)源后,Visual Studio沒有自動為Repeater創(chuàng)建ItemTemplate,這點(diǎn)和DataList不一樣。而且由于Repeater控件的智能標(biāo)簽里沒有象DataList里那樣的“Edit Templates”選項(xiàng),因此我們需要直接添加聲明代碼。我們使用和前一章一樣的ItemTemplate,它顯示product的 name, supplier, category。

  現(xiàn)在你的Repeater和ObjectDataSource的聲明標(biāo)記看起來應(yīng)該和下面差不多:

asp:Repeater ID="SortableProducts" DataSourceID="ProductsDataSource"

 EnableViewState="False" runat="server">

 ItemTemplate>

  h4>asp:Label ID="ProductNameLabel" runat="server"

   Text='%# Eval("ProductName") %>'>/asp:Label>/h4>

  Category:

  asp:Label ID="CategoryNameLabel" runat="server"

   Text='%# Eval("CategoryName") %>'>/asp:Label>br />

  Supplier:

  asp:Label ID="SupplierNameLabel" runat="server"

   Text='%# Eval("SupplierName") %>'>/asp:Label>br />

  br />

  br />

 /ItemTemplate>  

/asp:Repeater>

asp:ObjectDataSource ID="ProductsDataSource" runat="server"

 OldValuesParameterFormatString="original_{0}" TypeName="ProductsBLL"

 SelectMethod="GetProducts">

/asp:ObjectDataSource>

圖 3 是現(xiàn)在瀏覽該頁的樣子。


圖 3: 顯示 Product的 Name, Supplier, Category

第三步: 指導(dǎo) ObjectDataSource 對數(shù)據(jù)進(jìn)行排序

  為了讓Repeater里顯示的數(shù)據(jù)排序,我們需要將數(shù)據(jù)排序的sort expression告訴ObjectDataSource。在ObjectDataSource獲取數(shù)據(jù)前,首先激發(fā)的是Selecting event,它給我們提供了一個指定sort expression的機(jī)會。Selecting event handler 有一個ObjectDataSourceSelectingEventArgs 類型的參數(shù),它有一個名為Arguments的 DataSourceSelectArguments類型的屬性.。DataSourceSelectArguments類被設(shè)計(jì)用來將數(shù)據(jù)相關(guān)的請求從數(shù)據(jù)的消費(fèi)者傳給數(shù)據(jù)源控件,它有一個SortExpression property。

  創(chuàng)建一個Selecting event handler,用以下代碼將排序的信息從ASP.NET頁傳給ObjectDataSource:

protected void ProductsDataSource_Selecting

 (object sender, ObjectDataSourceSelectingEventArgs e)

{

 e.Arguments.SortExpression = sortExpression;

}

  sortExpression 需要賦值為排序字段的名字(例如“ProductName”)。它沒有排序方向相關(guān)的屬性,因此如果需要以降序來排序,將“DESC”附加在sortExpression 的值后面(比如“ProductName DESC”)。

  繼續(xù)試一下硬編碼將sortExpression 賦為不同的值,并瀏覽頁面 。如圖4,當(dāng)使用“ProductName DESC”作為sortExpression時,product會根據(jù)name的字母順序反向排序。


圖 4: Product 根據(jù)Name 的字母順序反向排序

第四步: 創(chuàng)建排序界面并記下Sort Expression 和 Direction

  開啟GridView的排序支持會將每個可排序的字段的header text轉(zhuǎn)換為一個LinkButton,當(dāng)被點(diǎn)擊時,會進(jìn)行相對應(yīng)的排序。這樣的排序?qū)ridView來說是很合理的,因?yàn)樗臄?shù)據(jù)是以列的形式整齊的展示。而對DataList和Repeater來說,需要不同的排序界面。一個常見的數(shù)據(jù)列表(相對于數(shù)據(jù)網(wǎng)格)的排序界面是使用一個提供排序字段的下拉列表。我們本章將完成這樣的界面。

  在SortableProducts Repeater上方添加一個DropDownList,將ID設(shè)為SortBy。在屬性窗口里點(diǎn)Items屬性打開ListItem集合編輯器。添加ListItems,讓數(shù)據(jù)根據(jù)ProductName, CategoryName, SupplierName 字段排序。同時添加ListItem讓product根據(jù)反向的name的順序排序。

  ListItem的Text屬性可以設(shè)為任何值(比如“Name”),但是Value必須設(shè)為數(shù)據(jù)字段的名字(比如“ProductName”)。添加字符串“DESC”到數(shù)據(jù)字段名字后面,來讓結(jié)果以降序排序,比如“ProductName DESC”。


圖 5:為每個可排序的字段添加 ListItem

  最后在DropDownList的右邊添加一個Button。將ID設(shè)為RefreshRepeater,Text設(shè)為“Refresh”。

  完成這些后,DropDownList和Button的聲明語法看起來應(yīng)該和下面差不多:

asp:DropDownList ID="SortBy" runat="server">

 asp:ListItem Value="ProductName">Name/asp:ListItem>

 asp:ListItem Value="ProductName DESC">Name (Reverse Order)

  /asp:ListItem>

 asp:ListItem Value="CategoryName">Category/asp:ListItem>

 asp:ListItem Value="SupplierName">Supplier/asp:ListItem>

/asp:DropDownList>

asp:Button runat="server" ID="RefreshRepeater" Text="Refresh" />

完成DropDownList后,我們需要更新ObjectDataSource的Selecting event handler,來讓它使用選擇的SortBy ListItem的Value作為sort expression,代替前面的硬編碼。


protected void ProductsDataSource_Selecting

 (object sender, ObjectDataSourceSelectingEventArgs e)

{

 // Have the ObjectDataSource sort the results by the selected

 // sort expression

 e.Arguments.SortExpression = SortBy.SelectedValue;

}

  現(xiàn)在第一次瀏覽頁的時候,由于默認(rèn)的SortBy ListItem 的值為ProductName,因此product會根據(jù)ProductName字段來排序。見圖6。選擇一個其它的項(xiàng)–比如“Category”–然后點(diǎn)Refresh,這時會postback,數(shù)據(jù)會根據(jù)category name來重新排序,見圖7。


圖 6: 第一次 Products 根據(jù) Name 排序


圖 7: 現(xiàn)在 Products 根據(jù) Category 來排序

  注意:點(diǎn)Refresh button會讓數(shù)據(jù)重新排序是因?yàn)镽epeater的view state被禁用了,因此Repeater在每次postback時重新綁定到數(shù)據(jù)源。如果你開啟Repeater的view state,這時改變drop-down list不會對排序有任何影響。為了修復(fù)這個問題,你可以為Refresh Button的 Click event創(chuàng)建一個event handler,來重新綁定Repeater到數(shù)據(jù)源(調(diào)用Repeater的DataBind()方法)。

  記下Sort Expression 和 Direction(排序表達(dá)式和排序方向)

  如果包含可排序的DataList或Repeater的頁可能有其它和排序無關(guān)的postback發(fā)生,那么我們需要在postback過程中記下sort expression 和 direction。比如,我們將本章的Repeater修改成為每個product包含一個Delete button。當(dāng)用戶點(diǎn)Delete button時我們會執(zhí)行一些代碼來刪除選擇的product,然后將數(shù)據(jù)綁定到Repeater。如果排序的信息在postback過程中沒有被保存下來,那么顯示的數(shù)據(jù)會回復(fù)到最初的排序狀態(tài)。

  本章里,DropDownList隱式的為我們將sort expression 和 direction保存在它的view state里。如果我們使用不同的排序界面–LinkButton提供不同的排序選項(xiàng)–我們就需要在postback過程中記下排序的信息。這個可以通過將排序的參數(shù)記在page的view state里,或者記在querystring里,或者通過一些其它狀態(tài)保存機(jī)制來實(shí)現(xiàn)。

  祝編程快樂!

作者簡介

  本系列教程作者 Scott Mitchell,著有六本ASP/ASP.NET方面的書,是4GuysFromRolla.com的創(chuàng)始人,自1998年以來一直應(yīng)用 微軟Web技術(shù)。大家可以點(diǎn)擊查看全部教程《[翻譯]Scott Mitchell 的ASP.NET 2.0數(shù)據(jù)教程》,希望對大家的學(xué)習(xí)ASP.NET有所幫助。

您可能感興趣的文章:
  • ASP.NET2.0數(shù)據(jù)庫入門之SqlDataSource
  • SqlDataSource 鏈接Access 數(shù)據(jù)
  • aspx中的mysql操作類sqldatasource使用示例分享
  • 在ASP.NET 2.0中操作數(shù)據(jù)之三十九:在DataList的編輯界面里添加驗(yàn)證控件
  • 在ASP.NET 2.0中操作數(shù)據(jù)之四十:自定義DataList編輯界面
  • 在ASP.NET 2.0中操作數(shù)據(jù)之四十一:DataList和Repeater數(shù)據(jù)分頁
  • 在ASP.NET 2.0中操作數(shù)據(jù)之四十三:DataList和Repeater數(shù)據(jù)排序(二)
  • 在ASP.NET 2.0中操作數(shù)據(jù)之四十四:DataList和Repeater數(shù)據(jù)排序(三)
  • 在ASP.NET 2.0中操作數(shù)據(jù)之四十五:DataList和Repeater里的自定義Button
  • 在ASP.NET 2.0中操作數(shù)據(jù)之四十六:使用SqlDataSource控件檢索數(shù)據(jù)
  • 在ASP.NET 2.0中操作數(shù)據(jù)之四十七:用SqlDataSource控件插入、更新、刪除數(shù)據(jù)

標(biāo)簽:中衛(wèi) 海西 聊城 臨夏 甘肅 清遠(yuǎn) 慶陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在ASP.NET 2.0中操作數(shù)據(jù)之四十二:DataList和Repeater數(shù)據(jù)排序(一)》,本文關(guān)鍵詞  在,ASP.NET,2.0,中,操作,數(shù)據(jù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在ASP.NET 2.0中操作數(shù)據(jù)之四十二:DataList和Repeater數(shù)據(jù)排序(一)》相關(guān)的同類信息!
  • 本頁收集關(guān)于在ASP.NET 2.0中操作數(shù)據(jù)之四十二:DataList和Repeater數(shù)據(jù)排序(一)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美另类videosbestsex久久 | 色综合久久天天综合观看| 久久国产精品只做精品| a级精品九九九大片免费看| 四虎精品在线观看| 国产麻豆精品| 国产一区二区精品久久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久精品免视看国产明星| 超级乱淫伦动漫| 美国一区二区三区| 国产91精品系列在线观看| 一本伊大人香蕉高清在线观看| 久久久久久久网| 久久99欧美| 亚洲天堂在线播放| 亚洲女人国产香蕉久久精品 | 国产精品自拍在线| 四虎久久精品国产| 免费毛片播放| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日韩专区亚洲综合久久| a级毛片免费观看网站| 欧美a级大片| 日韩中文字幕在线亚洲一区| 日韩在线观看免费| 欧美日本免费| 久久久久久久久综合影视网| 青青青草视频在线观看| 国产麻豆精品hdvideoss| 一本伊大人香蕉高清在线观看| 欧美1卡一卡二卡三新区| 日韩专区亚洲综合久久| 精品视频免费观看| 亚洲精品永久一区| 久久99这里只有精品国产| 国产不卡在线看| 国产欧美精品| 成人高清视频在线观看| 青青久热| 国产伦久视频免费观看视频| 成人免费网站视频ww| 精品视频一区二区三区| 天堂网中文字幕| 成人高清视频免费观看| 国产极品白嫩美女在线观看看| 成人免费观看的视频黄页| 国产激情一区二区三区| 亚洲精品影院久久久久久| 精品视频免费看| 亚洲精品影院久久久久久| 青青久久精品国产免费看| 欧美国产日韩一区二区三区| 免费国产在线观看| 免费一级生活片| 尤物视频网站在线| 黄色短视频网站| 国产视频在线免费观看| 超级乱淫伦动漫| 日韩在线观看免费完整版视频| 久久99中文字幕| 免费一级片在线观看| 精品久久久久久中文字幕一区 | 日本伦理网站| 国产一区二区福利久久| 美女免费黄网站| 国产不卡福利| 国产伦久视频免费观看视频| 日韩一级黄色片| 日韩字幕在线| 国产一区二区福利久久| 美国一区二区三区| 久久国产一久久高清| 精品美女| 国产亚洲免费观看| 国产视频久久久久| 可以在线看黄的网站| 精品国产一区二区三区久久久狼| 成人高清护士在线播放| 午夜激情视频在线播放| 四虎久久精品国产| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美a免费| 精品国产三级a∨在线观看| 欧美另类videosbestsex久久| 亚州视频一区二区| 国产伦久视频免费观看 视频 | 一级片片| 中文字幕一区二区三区精彩视频 | 国产一区二区福利久久| 欧美激情伊人| 国产视频久久久| 国产不卡在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久精品大片| 香蕉视频久久| 欧美a免费| 一级女性全黄生活片免费| 欧美a级成人淫片免费看| 韩国三级香港三级日本三级la| 99色视频在线| 欧美大片毛片aaa免费看| 成人免费一级纶理片| 国产网站麻豆精品视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 天天做人人爱夜夜爽2020| 国产一区二区精品| 亚欧乱色一区二区三区| 日本免费区| 毛片电影网| 国产伦精品一区二区三区无广告| 在线观看导航| 可以免费看毛片的网站| 99色视频在线| 国产不卡在线看| 黄视频网站在线免费观看| 国产福利免费观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 一本高清在线| 毛片成人永久免费视频| 久久国产一久久高清| 免费一级片网站| 可以在线看黄的网站| 亚洲第一页乱| 999精品视频在线| 青青久久精品| 成人影院一区二区三区| 国产麻豆精品视频| 精品视频一区二区三区| 青青青草影院| 国产精品自拍在线观看| 成人高清视频免费观看| 久久99这里只有精品国产| 国产成人精品在线| 欧美一区二区三区性| 91麻豆精品国产自产在线观看一区| 日本免费看视频| 美女免费黄网站| 国产成+人+综合+亚洲不卡| 国产麻豆精品hdvideoss| 久久99青青久久99久久| 午夜激情视频在线播放| 精品国产一区二区三区国产馆| 国产一区二区精品尤物| 国产成人啪精品| 国产精品1024永久免费视频 | 日日夜人人澡人人澡人人看免| 精品国产亚洲一区二区三区| 精品国产一区二区三区免费| 日本免费区| 九九热精品免费观看| 亚洲女人国产香蕉久久精品| 欧美国产日韩在线| 天堂网中文字幕| 91麻豆tv| 你懂的在线观看视频| 99色精品| 精品视频在线看| 成人a级高清视频在线观看| 色综合久久天天综线观看| 一级女性大黄生活片免费| 精品久久久久久免费影院| 日韩av成人| 国产亚洲男人的天堂在线观看| 日本在线www| 在线观看成人网 | 精品视频一区二区三区免费| 精品视频在线看| 久久福利影视| 国产不卡精品一区二区三区| 国产91视频网| 尤物视频网站在线| 国产一区二区精品久久91| 99热热久久| 国产一区精品| 日韩欧美一二三区| 91麻豆精品国产高清在线| 成人在激情在线视频| 精品久久久久久中文| a级毛片免费观看网站| 中文字幕Aⅴ资源网| 国产成a人片在线观看视频| 韩国毛片免费大片| 久久精品人人做人人爽97| 一级片片| 国产伦精品一区三区视频| 91麻豆爱豆果冻天美星空| 亚洲女人国产香蕉久久精品 | 国产成人精品综合在线| 久久成人亚洲| 欧美a级成人淫片免费看| 日日日夜夜操| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 一级毛片视频在线观看| 精品久久久久久影院免费| 国产成a人片在线观看视频| 成人免费观看男女羞羞视频 | 亚洲精品久久久中文字| 精品国产一区二区三区免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 |