婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

熱門標簽:百應電話機器人外呼系統 網絡電話外呼系統上海 地圖標注軟件免費下載 聯通官網400電話辦理 臨沂智能電話機器人加盟 蘇州如何辦理400電話 西寧呼叫中心外呼系統線路商 400電話辦理怎么樣 外呼電話機器人成本

導言

  DataList和Repeater數據分頁里我們學習了如何在DataList里添加分頁功能。我們在ProductsBLL類里創建了一個名為GetProductsAsPagedDataSource的方法,它返回一個PagedDataSource對象。當綁定到DataList或Repeater時,他們將只顯示請求頁的數據。這個技術和GridView,DetailsView,FormView的內置分頁功能原理差不多。

  除了分頁外,GridView還提供了內置的排序功能,而DataList和Repeater都沒有。然而排序功能可以通過一點點代碼就實現。本章我們將學習如何在DataList和Repeater里實現排序功能,我們還將創建一個同時支持分頁和排序的DataList或Repeater。

回顧一下排序

  如我們在分頁和排序報表數據里看到的,GridView提供了排序的支持。每個GridView的字段可以有一個關聯的SortExpression,它指明了對數據進行排序依據的字段。當GridView的AllowSorting屬性設為true時,每個包含SortExpression 屬性的GridView的字段的header都表現為一個LinkButton。當點一個header時,頁面postback,數據會根據被點字段的SortExpression進行排序。另外,SortDirection屬性指明了數據是升序或降序。

  當將GridView綁定到數據源控件時,它會將SortExpression和SortDirection傳給數據源控件。數據源控件獲取數據并根據SortExpression和SortDirection進行排序。然后將數據返回給GridView。

在DataList或Repeater里實現這個功能,我們需要: 

  創建一個排序界面
  將排序的字段和方向(升序或降序)記下
  指導ObjectDataSource根據特定字段排序

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

第二步: 在 Repeater里顯示 Products

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


圖 1: 創建 ObjectDataSource


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

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

  現在你的Repeater和ObjectDataSource的聲明標記看起來應該和下面差不多:

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 是現在瀏覽該頁的樣子。


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

第三步: 指導 ObjectDataSource 對數據進行排序

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

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

protected void ProductsDataSource_Selecting

 (object sender, ObjectDataSourceSelectingEventArgs e)

{

 e.Arguments.SortExpression = sortExpression;

}

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

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


圖 4: Product 根據Name 的字母順序反向排序

第四步: 創建排序界面并記下Sort Expression 和 Direction

  開啟GridView的排序支持會將每個可排序的字段的header text轉換為一個LinkButton,當被點擊時,會進行相對應的排序。這樣的排序對GridView來說是很合理的,因為它的數據是以列的形式整齊的展示。而對DataList和Repeater來說,需要不同的排序界面。一個常見的數據列表(相對于數據網格)的排序界面是使用一個提供排序字段的下拉列表。我們本章將完成這樣的界面。

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

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


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

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

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

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;

}

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


圖 6: 第一次 Products 根據 Name 排序


圖 7: 現在 Products 根據 Category 來排序

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

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

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

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

  祝編程快樂!

作者簡介

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

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

標簽:中衛 海西 聊城 臨夏 甘肅 清遠 平涼 慶陽

巨人網絡通訊聲明:本文標題《在ASP.NET 2.0中操作數據之四十二:DataList和Repeater數據排序(一)》,本文關鍵詞  在,ASP.NET,2.0,中,操作,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在ASP.NET 2.0中操作數據之四十二:DataList和Repeater數據排序(一)》相關的同類信息!
  • 本頁收集關于在ASP.NET 2.0中操作數據之四十二:DataList和Repeater數據排序(一)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品123| 免费观看在线色综合| 欧美精品一区二区三区久久久| 欧美日韩精品一二三区| 欧美精品日日鲁夜夜添| 8v天堂国产在线一区二区| 欧美一区二区三区四区五区| 欧美一卡二卡在线| 久久精子c满五个校花| 国产精品视频yy9299一区| 久久久五月婷婷| 国产精品第13页| 亚洲精品va在线观看| 午夜精品久久久久影视| 免费日本视频一区| 国产精品亚洲成人| 色诱亚洲精品久久久久久| 欧美日韩综合在线免费观看| 欧美巨大另类极品videosbest| 欧美日韩在线播放| 欧美v日韩v国产v| 亚洲国产高清在线观看视频| 亚洲影视在线播放| 乱中年女人伦av一区二区| 成人黄色国产精品网站大全在线免费观看| 99久久精品国产网站| 欧美一区日韩一区| 欧美激情一区二区三区蜜桃视频| 亚洲欧美激情在线| 久久成人免费网站| 成人av集中营| 欧美一区二区三区四区久久| 国产欧美久久久精品影院| 亚洲国产欧美在线人成| 国产高清精品在线| 欧美精品v国产精品v日韩精品| 国产亚洲福利社区一区| 一二三区精品福利视频| 国产馆精品极品| 欧美中文字幕一区| 国产精品二区一区二区aⅴ污介绍| 日日夜夜一区二区| 成人av在线看| 精品国产伦理网| 视频在线观看一区| 93久久精品日日躁夜夜躁欧美| 日韩欧美一级二级三级久久久| 亚洲天堂av老司机| 国产成人日日夜夜| 日韩欧美一卡二卡| 偷拍一区二区三区| 91精品91久久久中77777| 国产精品久久久久9999吃药| 三级欧美在线一区| 欧美日韩一区在线观看| 国产精品不卡一区二区三区| 国产成人亚洲精品青草天美 | 成人在线视频一区| 欧美成人免费网站| 亚洲摸摸操操av| 97超碰欧美中文字幕| 国产欧美日韩综合精品一区二区| 麻豆成人综合网| 91精品国产品国语在线不卡| 亚洲一区二区高清| 欧美在线免费播放| 亚洲综合在线免费观看| 色88888久久久久久影院野外| 《视频一区视频二区| 91视频www| 亚洲日本va午夜在线影院| av在线不卡免费看| 成人欧美一区二区三区小说 | 日韩一区二区不卡| 日本欧美一区二区| 日韩限制级电影在线观看| 爽好久久久欧美精品| 欧美一区二区福利视频| 久久草av在线| 久久久久久**毛片大全| 国产成人自拍在线| 国产精品美女久久久久aⅴ| bt欧美亚洲午夜电影天堂| 亚洲色图欧美激情| 欧美日韩一级视频| 免费xxxx性欧美18vr| 久久综合色之久久综合| 成人性生交大片免费看在线播放| 亚洲视频一区二区在线| 欧美亚洲国产一卡| 精品中文字幕一区二区| 欧美国产激情一区二区三区蜜月| 91论坛在线播放| 日韩激情中文字幕| 国产偷国产偷精品高清尤物 | 91看片淫黄大片一级在线观看| 一区二区三区欧美亚洲| 91麻豆精品91久久久久同性| 国产成人8x视频一区二区| 一区二区三区在线观看动漫| 欧美精品久久99久久在免费线 | 欧美va天堂va视频va在线| 福利电影一区二区| 亚洲精品国产精华液| 欧美va在线播放| 91免费观看视频在线| 蜜芽一区二区三区| 国产精品久久久久久久久搜平片 | 久久午夜羞羞影院免费观看| 91色porny在线视频| 美日韩一区二区| 国产精品国产三级国产aⅴ入口| 欧美私人免费视频| 国产凹凸在线观看一区二区| 天天综合色天天综合色h| 日本一区二区动态图| 正在播放亚洲一区| 99久久精品国产网站| 韩国三级在线一区| 日韩av中文字幕一区二区| 亚洲国产成人在线| 日韩免费一区二区三区在线播放| 99久免费精品视频在线观看| 国产制服丝袜一区| 午夜视频在线观看一区二区三区| 国产精品网站一区| 日韩你懂的在线播放| 欧美日韩国产免费一区二区| 91麻豆国产在线观看| 国产成人亚洲综合色影视| 久久精品国产77777蜜臀| 亚洲综合色噜噜狠狠| 国产精品国产三级国产有无不卡| 日韩亚洲欧美在线| 欧美日韩一区二区在线视频| 99re亚洲国产精品| 成人a区在线观看| 成人国产精品免费观看动漫| 国产麻豆精品在线观看| 韩国一区二区视频| 久久国产尿小便嘘嘘| 日本不卡在线视频| 另类人妖一区二区av| 麻豆国产欧美日韩综合精品二区| 亚洲国产精品久久久男人的天堂| 一区二区三区日韩精品| 一区二区三区四区国产精品| 亚洲精品五月天| 一区二区三区日韩在线观看| 亚洲免费av在线| 亚洲第一在线综合网站| 亚洲成人综合网站| 亚洲福利电影网| 日韩经典中文字幕一区| 久久99九九99精品| 国产在线播放一区三区四| 国产乱子轮精品视频| 国产麻豆成人传媒免费观看| 成人黄色综合网站| 欧美自拍偷拍午夜视频| 欧美美女一区二区| 日韩一区二区三区精品视频| 2024国产精品视频| 亚洲欧美在线视频观看| 亚洲高清不卡在线观看| 九九九精品视频| aaa国产一区| 7777精品伊人久久久大香线蕉最新版| 7777精品伊人久久久大香线蕉 | 国产免费观看久久| 最好看的中文字幕久久| 午夜影院在线观看欧美| 麻豆国产精品一区二区三区| 成人一区二区在线观看| 在线观看精品一区| 91精品国产综合久久精品麻豆| 久久先锋资源网| 亚洲精品一二三| 韩国视频一区二区| 日本黄色一区二区| 久久久一区二区三区| 亚洲乱码日产精品bd| 久久精品免费观看| 91亚洲精华国产精华精华液| 欧美午夜精品一区| 中文成人综合网| 免费成人av在线播放| 91视频一区二区三区| 欧美精品一区二区三区久久久| 亚洲综合色噜噜狠狠| 国产一区二区三区精品视频| 色欧美乱欧美15图片| 欧美成人aa大片| 亚洲一区二区三区在线看| 国产精品一区二区三区乱码| 欧美伊人久久久久久久久影院| 国产亚洲精品福利| 韩国成人福利片在线播放| 欧美日韩精品二区第二页| 亚洲日本成人在线观看|