2012-06-14 57 views
0

我有一個綁定到數據源的列表視圖。 如何啓用按列排序?asp.net ListView按列排序

所以單擊列標題時,一旦它按升序,再次單擊它按降序排列。

有嚮導任何可以設置或這一切需要通過程序來完成?

+0

你見過這個** http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.sorting.aspx** –

+0

一般來說,這要麼在code-後面或在數據庫中。你能提供你正在使用的框架版本嗎?這將有助於提供最佳解決方案,特別是如果您可以使用LINQ。 – Joshua

+0

谷歌發現這篇文章,首先在列表中。 http://support.microsoft.com/kb/319401 完整源可用。 –

回答

0

這取決於您正在使用的數據源。如果數據源允許排序,則可以按照http://msdn.microsoft.com/en-us/library/sa88ktts.aspx中描述的方式進行設置。否則,你必須以編程方式處理自己的排序。通常這比自動化方法更容易。

+0

我得到一個ObjectDataSource不允許排序的IEnumerable。有沒有辦法配置數據源來允許它? –

+0

試試這個 - http://www.vinull.com/Post/2007/04/17/aspnet-sorting-a-gridview-with-custom-o.aspx –

3

如果使用一個數據源控件然後排序可以在ListView控制來實現,而無需編寫的一行代碼 - 它是全部由ListView和其數據源控制自動處理。當然,在更高級的場景中,我們可能需要手動對數據進行排序或以編程方式進行排序。

在以下示例中,將的ListView通過產品名稱和單價進行排序。只需使用適當的CommandName和CommandArgument屬性值在ListView的LayoutTemplate中添加兩個LinkBut​​ton。

<asp:ListView ID="ProductList" runat="server" DataSourceID="ProductDataSource"> 
    <LayoutTemplate> 
     <h3>Product Listing</h3> 
     <asp:LinkButton runat="server" ID="SortByName" CommandName="Sort" 
        CommandArgument="ProductName">Sort by Name</asp:LinkButton> 
     | <asp:LinkButton runat="server" ID="SortByPrice" CommandName="Sort" 
        CommandArgument="UnitPrice">Sort by Price</asp:LinkButton> 

     <blockquote> 
     <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder> 
     </blockquote> 
    </LayoutTemplate> 

    ... 
</asp:ListView> 

如果用戶點擊「按價格排序」鏈接連續兩次,第一次將產品按升序排列(從便宜到最昂貴)的排序,但第二次排序的順序相反。

+3

請在你的答案的鏈接插入的重要組成部分。 –