日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(三)

發布時間:2024/1/17 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第七步: 在自定義分頁的Repeater 里添加排序功能

現在已經完成了自定義分頁,我們再來添加排序功能。ProductsBLL類的GetProductsPagedAndSorted方法和GetProductsPaged一樣有startRowIndex 和 maximumRows 參數,不一樣的是它還多了一個sortExpression 參數。在SortingWithCustomPaging.aspx里使用GetProductsPagedAndSorted方法我們需要:

  • 將ObjectDataSource的SelectMethod屬性從GetProductsPaged改為GetProductsPagedAndSorted。
  • 為ObjectDataSource的SelectParameters參數集合增加一個sortExpression Parameter。
  • 創建一個私有的屬性用來在postback過程中通過view state存儲SortExpression。
  • 修改ObjectDataSource的Selecting event handler將ObjectDataSource的sortExpression 參數值賦為SortExpression 屬性(3中創建的)。
  • 創建排序界面。
  • 首先修改ObjectDataSource的SelectMethod屬性并添加sortExpression 參數。確定sortExpression 的類型是String。完成這些后ObjectDataSource的聲明標記看起來應該和下面差不多:

    ASP.NET

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

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

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

    ??? SelectMethod="GetProductsPagedAndSorted"

    ??? OnSelecting="ProductsDataSource_Selecting">

    ??? <SelectParameters>

    ??????? <asp:Parameter Name="sortExpression" Type="String" />

    ??????? <asp:Parameter Name="startRowIndex" Type="Int32" />

    ??????? <asp:Parameter Name="maximumRows" Type="Int32" />

    ??? </SelectParameters>

    </asp:ObjectDataSource>

    Next, we need a page-level SortExpression property whose value is serialized to view state. If no sort expression value has been set, use “ProductName” as the default:

    然后添加一個SortExpression屬性,它的值為view state。在沒有設任何sort expression的值時候,使用“ProductName”作為默認值。

    C#

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    private string SortExpression

    {

    ??? get

    ??? {

    ???????object o = ViewState["SortExpression"];

    ??????? if (o == null)

    ??????????? return "ProductName";

    ??????? else

    ??????????? return o.ToString();

    ??? }

    ??? set

    ??? {

    ??????? ViewState["SortExpression"] = value;

    ??? }

    }

    在ObjectDataSource調用GetProductsPagedAndSorted方法前,我們需要將sortExpression 參數設為SortExpression屬性的值。在Selecting event handler里添加以下代碼:

    C#

    1

    e.InputParameters["sortExpression"] = SortExpression;

    現在只需要完成排序界面就可以了。和我們上一個例子一樣,我們使用3個button來實現排序功能,允許用戶根據product name, category, supplier來排序。

    ASP.NET

    1

    2

    3

    4

    5

    6

    <asp:Button runat="server" id="SortByProductName"

    ??? Text="Sort by Product Name" />

    <asp:Button runat="server" id="SortByCategoryName"

    ??? Text="Sort by Category" />

    <asp:Button runat="server" id="SortBySupplierName"

    ??? Text="Sort by Supplier" />

    為這三個button都創建Click event handler。在其中將StartRowIndex設為0,SortExpression設為相應的值,并將數據重新綁定到Repeater。

    C#

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    protected void SortByProductName_Click(object sender, EventArgs e)

    {

    ??? StartRowIndex = 0;

    ??? SortExpression = "ProductName";

    ??? Products.DataBind();

    }

    ?

    protected void SortByCategoryName_Click(object sender, EventArgs e)

    {

    ??? StartRowIndex = 0;

    ??? SortExpression = "CategoryName";

    ??? Products.DataBind();

    }

    ?

    protected void SortBySupplierName_Click(object sender, EventArgs e)

    {

    ??? StartRowIndex = 0;

    ??? SortExpression = "CompanyName";

    ??? Products.DataBind();

    }

    現在所有工作都完成了!實現自定義分頁和排序的一些步驟和默認分頁差不多。圖18顯示的當按照category排序時的最后一頁數據。


    18: Category排序的最后一頁數據

    注意:在前面的例子里,當按照supplier排序時排序表達式為” SupplierName”。然而執行自定義分頁時我們需要使用” CompanyName”。這是因為自定義分頁的存儲過程–GetProductsPagedAndSorted–將sort expression傳給ROW_NUMBER(),ROW_NUMBER()需要一個實際的列名,而不是別名。因此我們必須使用CompanyName(Suppliers表的一個列名),而不是使用SupplierName (SELECT語句里的別名)作為expression。

    總結

    無論是DataList還是Repeater都沒有提供內置的排序支持,但是通過自定義界面和一點點代碼,我們可以實現這樣的功能。當僅僅只實現排序時(不包含分頁),sort expression可以通過DataSourceSelectArguments對象傳給ObjectDataSource的Select方法。DataSourceSelectArguments對象的SortExpression屬性可以在ObjectDataSource的electing event handler里賦值。

    為已經有排序功能的DataList或Repeater添加排序功能,最簡單的方法是在BLL里添加一個接收sort expression的方法。然后這個信息可以通過ObjectDataSource的SelectParameters參數傳進去。

    本章完成了DataList和Repeater的分頁和排序。下一章,也就是最后一章,我們將學習如何在DataList和Repeater的templates(模板)里添加Button,用來提供一些自定義的基于但個item(項)的功能。

    祝編程愉快!

    總結

    以上是生活随笔為你收集整理的Scott Mitchell 的ASP.NET 2.0数据教程之四十五::DataList和Repeater数据排序(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。