簡體   English   中英

使用帶有2個選擇的下拉列表對綁定到ObjectDataSource的ListBox進行排序

[英]Sorting a ListBox bound to an ObjectDataSource using a dropdown with 2 selections

我在使用下拉列表對列表框進行排序時遇到問題。 下拉菜單將有2個選項:

  1. 排序方式 #

  2. 按類型排序

ListBox包含一個項目列表,這些項目最初由#升序排列。 它具有以下格式:

  1. 1:紅色
  2. 2:綠色
  3. 3:藍色
  4. 4:紅色
  5. 5:紅色

如果用戶選擇“按#排序”,則如果已經按升序排序,則應按降序排序;如果已經按降序排序,則應按升序排序。 如果用戶選擇“按類型排序”,則應該對顏色進行排序,然后按#排序,因此上面的列表將變為:

  1. 1:紅色
  2. 4:紅色
  3. 5:紅色
  4. 2:綠色
  5. 3:藍色

lisbox是從ObjectDataSource獲取其數據的,其定義如下:

<asp:ObjectDataSource ID="odsColors" runat="server" SelectMethod="GetColors"
        TypeName="XaiSoft.Data">  
</asp:ObjectDataSource>

我已經存根了一種排序方法,但是這就是我所堅持的方法,我不確定該怎么做:

public void SortColorList()
{

}

我更新了上述方法以顯示要執行的操作,但是出現以下錯誤:

DataSource和DataSourceID均在“ lstColors”上定義。 刪除一個定義。

protected void SortColorList()
{

    XaiSoft.Data.Colors c = new XaiSoft.Data.Colors();
    DataTable dt = c.GetColorList();
    DataView dv = new DataView(dt);

    dv.Sort = "[" + dv.Table.Columns["ColorName"].ColumnName + "] asc";
    lstAuctions.DataSource = dv; //Error happens here.
    lstAuctions.DataBind();

}

我通過設置DataSourceId = string.empty來解決該錯誤。

感謝您的幫助,XaiSoft

創建一個自定義比較(實現IComparable的)描述在這里和使用到您的收藏適當排序。 該文章中還列出了其他替代方法(例如使用Linq)。

您提到了lstAuctions(ListBox)的數據源是odsColors ObjectDataSource,可能是在控件的屬性上設置的(在設計時)。 在后面的代碼中,將lstAuctions綁定到dv(DataView)。 這似乎可以解釋該錯誤:“ DataSource和DataSourceID都在'lstColors'上定義。刪除一個定義。” 但是,我在您的代碼中看不到“ lstColors”控件。 該問題可能是由頁面上的其他內容引起的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM